/ / हवा सी # एनम - एनम, हवा के साथ काम करने के लिए समर्थन प्रदान करती है

हवा सी # Enums - enums, हवा के साथ काम करने के लिए समर्थन प्रदान करते हैं

मैं हवा का उपयोग करते हुए enum के साथ अपने ड्रॉपडाउन को आबाद करना चाहता हूं। यह हवा मेटाडेटा में एनम दिखाती है लेकिन मुझे इसका सेवन करने का तरीका नहीं मिला। क्या हवा सी # एनम को काम करने के लिए अभी तक समर्थन प्रदान करती है?

उत्तर:

जवाब के लिए 0 № 1

यदि आप एक मानक ब्रीज़ WebApi सर्वर का उपयोग कर रहे हैंतब एनम वैल्यू को स्ट्रिंग्स के रूप में कम किया जाना चाहिए और सर्वर को स्ट्रिंग्स के रूप में भी सहेजा जा सकता है। बॉक्स से बाहर, डिफ़ॉल्ट ब्रीज़ WebApi सर्वर कार्यान्वयन स्ट्रिंग्स को दोनों दिशाओं में स्वचालित रूप से सही एनम मानों में बदल देगा।

(नोट: यह वर्तमान MS WebApi / OData प्रदाता का उपयोग करने वाले सर्वर के साथ काम नहीं करेगा क्योंकि MS अभी तक इस प्रदाता के साथ दुश्मनी का समर्थन नहीं करता है - MS उनकी आगामी 4.0 रिलीज में इसका समर्थन करेगा।)

इसलिए, उदाहरण के लिए, यह मानते हुए कि आपके पास सर्वर साइड एनम था जो इस तरह दिखता था:

public enum RoleType {
Guest = 0,
Restricted = 1,
Standard = 2,
Admin = 3
}

एक "भूमिका" वर्ग के साथ संयोजन में "रोलटेप" संपत्ति थी, तो निम्नलिखित क्वेरी काम करेगी:

    var query = new EntityQuery("Roles").where("RoleType", "==", "Restricted");
myEntityManager.executeQuery(query).then(...);

इसी तरह, यदि आप किसी भूमिका के लिए रोलटेप बदलना चाहते हैं तो आप कर सकते हैं

    role.RoleType = "Standard"; // assuming breeze backingStore adapter.
myEntityManager.saveChanges();

जवाब के लिए 0 № 2

यदि आप ऑफ़लाइन हवा मेटाडेटा उत्पन्न कर रहे हैंतब आप मेटाडाटा में सभी Enums परिभाषा प्राप्त कर सकते हैं और सभी enum प्रकार और उनकी परिभाषाओं को पॉप्युलेट करने के लिए JS Dictionary (संबद्ध सरणी) बना सकते हैं।

खैर मेरी स्थिति यह थी कि मैं अपने वेब प्रोजेक्ट के लिए नैन्सीएफएक्स (नो ईएफ) + ब्रीज + एंगुलरजेएस का उपयोग कर रहा था। मैंने मेटाडेटा ऑफ़लाइन उत्पन्न किया और इसे मेटाडेटा.जेएस फ़ाइल में संग्रहीत किया।

EntityManager बनाने के बाद, मैंने एक JS डिक्शनरी में enum डिफिनेशन निकाले, जिसे मैंने बाद में ड्रॉपडाउन के लिए इस्तेमाल किया, इसी enum स्ट्रिंग्स को प्रदर्शित किया।

जेएस डिक्शनरी में एनुम परिभाषा और स्टोर निकालें

        JSON.parse(window.app.metadata).schema.enumType.forEach(function (enumType) {
var newEnumValues = [];

enumType.member.forEach(function (enumValue) {
var newEnumValue = { id: enumValue.value, name: enumValue.name };
newEnumValues.push(newEnumValue);
});

enumDictionary[enumType.name] = newEnumValues;
});

Enum नाम और valueid के आधार पर enum मान प्राप्त करने की विधि

        function GetEnumDictionaryValue(enumName, enumValueId) {
var result = null;
enumDictionary[enumName].some(function (enumValue) {
if (enumValue.id == enumValueId) {
result = enumValue.name;
return;
}
});

return result;
}

ड्रॉपडाउन के लिए बाध्य मान अब ड्रॉपडाउन को बांधने के लिए, बस एन्यूमरेड को कॉल करें [] और परिणाम को एक कंट्रोलर वेरिएबल में स्टोर करें। मैं Angular JS का उपयोग कर रहा था, इसलिए मैंने html पेज पर नीचे दिए गए कोड का उपयोग किया

      <select ng-options="type.id as type.name for type in <VariableName>"
></select>