एमवीसी मॉडल बूलियन हां या नहीं प्रदर्शित करता है

मेरे मॉडल में एमवीसी 4 इकाई फ्रेमवर्क 4.5 में एक बूलियन फ़ील्ड है

मैं अपने विचार में क्षेत्र को प्रदर्शित करना चाहता हूं

मैं इस कॉल का उपयोग करता हूं

@item.isTrue

लेकिन मुझे सच या झूठा मिला,

मैं हां प्राप्त करना चाहता हूं जब सत्य और झूठी नहीं

मुझे क्या करना चाहिए?

0
जोड़ा लेखक Scottie, स्रोत

6 उत्तर

यदि आप भीड़ में हैं, या आप बिट के बजाय एक पूर्णांक का उपयोग करते हैं। (यदि आपके पास बाद में तीसरा विकल्प है और आपका yes/no बन जाता है तो यह ऐसा होता है yes, no, octopus , जैसा कि मेरा हमेशा लगता है, यहां सरल सादा है जाने का त्वरित गंदा तरीका ... रेजर व्यू के शीर्ष पर अपना चर घोषित करें:

@model MyModel
@using My.Models;
@{
    ViewBag.Title = "Index";
    ViewBag.ReturnUrl = "";
    string Active = ""; //This will hold your "Yes" or "No"
 }

जैसे ही आप अपने आइटम से गुज़रते हैं ... निम्न कोड आपके स्ट्रिंग वेरिएबल Active को "हां" या "नहीं" पर सेट करेगा और फिर आप इसे पृष्ठ पर जैसा दिखेंगे (बिना @ एचटीएमएल। डिस्प्लेफ़ोर (...) मार्कअप।

@{if (item.Active == 0){Active = "No";}else{Active = "Yes";}}
@Active

यदि आप पहले से नहीं जानते हैं, तो पूरे "आस-पास" @ {} के साथ वक्तव्य जीवन को आसान बनाता है - ब्रैकेट के भीतर कोई @ की आवश्यकता नहीं है ...

0
जोड़ा

डिजिटलडी के उत्तर पर विस्तार करने के लिए, आप इसे एक विस्तार विधि में लपेटने पर विचार कर सकते हैं:

public static string ToFriendlyString(this Boolean b)
{
    return b ? "Yes" : "No";
}

फिर आप इसे पूरे स्थान पर उपयोग कर सकते हैं:

@item.IsTrue.ToFriendlyString()
0
जोड़ा

आप इस तरह एक कस्टम एचटीएमएल सहायक विस्तार विधि का उपयोग कर सकते हैं:

@Html.YesNo(item.IsTrue)

इसके लिए कोड यहां दिया गया है:

public static MvcHtmlString YesNo(this HtmlHelper htmlHelper, bool yesNo)
{
    var text = yesNo ? "Yes" : "No";
    return new MvcHtmlString(text);
}

इस तरह आप इसे साइट पर रेज़र कोड की एक पंक्ति के साथ फिर से उपयोग कर सकते हैं।

0
जोड़ा

आपके विचार में:

@(item.isTrue?"Yes":"No")
0
जोड़ा

अपने मॉडल में ऐसा कुछ लिखें:

public Nullable Active
{
    get;
    set;
}
public string ISActive
{
    get
    {
        return (bool)this.Active ? "Yes" : "NO";
    }
}

Active is a boolean property, we create ISActive property for reading its value and show appropriate message to user.

0
जोड़ा

यह थोड़ा देर हो चुकी है, लेकिन ...

अन्य उत्तर उत्तरों द्वारा छोड़ी गई एक उपयोगी विधि कस्टम डिस्प्ले टेम्पलेट विधि है। इस कोड को डालकर:

@model bool

@{Model ? "Yes" : "No"}

डिस्प्ले टेम्पलेट फ़ोल्डर (/Views/Shared/displayTemplates ) में आंशिक दृश्य (शायद YesNo.cshtml ) में। फिर, अपने विचार में, इस लाइन का उपयोग करें:

@Html.Display(item.isTrue,"YesNo")

जहां "YesNo" जो भी आपने अपना आंशिक दृश्य नाम दिया है, .cshtml एक्सटेंशन घटाएं

दूसरी स्ट्रिंग ( templateName ) जोड़कर, आप डिस्प्ले एक्सटेंशन को बुलियन को डिफ़ॉल्ट विधि (चेकबॉक्स) के बजाय अपने कस्टम टेम्पलेट के साथ प्रदर्शित करने के लिए बताते हैं।

यह विधि इस स्थिति के लिए सबसे सरल नहीं हो सकती है, लेकिन यह अधिक जटिल स्थितियों (जैसे कहें, दिनांक चुनने के लिए एक कस्टम कैलेंडर) के साथ काम में आती है।

0
जोड़ा