2012-05-01 20 views
7

एक दृश्य के लिए, मुझे कुछ चेकबॉक्स उत्पन्न करना होगा।एचटीएमएल सहायक के साथ एक सशर्त चेक, अक्षम, ... कैसे करें?

मैं आइटम में से एक संग्रह है:

public class ItemSelection 
    { 
     public int Id { get; set; } 
     public String Name { get; set; } 
     public Boolean IsSelected { get; set; } 
     public Boolean IsActive { get; set; } 
    } 

और ध्यान में रखते हुए, मैं इस

@foreach(ItemSelection item in Model.Items){ 
    Html.CheckBoxFor(m=>item.IsSelected)//HERE I WOULD LIKE TO HAVE DISABLED properties if I've a IsActive=falsel 
    Html.HiddenFor(m=>item.Id) 
} 

पर पुनरावृत्ति कर रहा हूँ अब मैं देख रहा हूँ कि मैं क्या कर सकते हैं एक में जो "अगर" मैं इस संपत्ति के आधार पर एक अलग HtmlAttribute सरणी बनाता हूं, लेकिन केवल एक सरणी बनाने के लिए कोई तरीका है

new {disabled=item.IsActive?"ONE_SPECIAL_VALUE_HERE":"disabled"} 

मैंने कोशिश की false, या कुछ अन्य चीजें रखने के लिए, कुछ भी काम नहीं किया।

उत्तर

8

आप टाल नहीं सकते if:

समस्या disabled विशेषता की विशेष प्रकृति के साथ कोई "विशेष" मूल्य जो अपने नमूना काम, because होगा क्योंकि वहाँ:

इस अक्षमता के लिए "अक्षम" केवल संभावित मान है। यदि इनपुट सक्षम होना चाहिए, तो पूरी तरह से विशेषता को छोड़ दें।

तो आपको नियंत्रण को सक्षम करने के लिए विशेषता को छोड़ने की आवश्यकता है लेकिन सभी HTML सहायककर्ता HTML गुणों के रूप में गुम अज्ञात वस्तुओं के सभी गुणों को क्रमबद्ध करेंगे। और अज्ञात रूप से अज्ञात प्रकारों में गुण जोड़ने का कोई तरीका नहीं है।

हालांकि यदि आपके पास सक्षम/अक्षम मामले के लिए कई सामान्य विशेषताएं हैं, और आप दो अनामिक प्रकार नहीं बनाना चाहते हैं, तो आप गुणों को वैकल्पिक disabled विशेषता के साथ एक शब्दकोश में डाल सकते हैं और शब्दकोश को HTMLAttributes के रूप में उपयोग कर सकते हैं :

var checkboxHtmlAttributes = new Dictionary<string, object> 
           {{"attibute1", "value1"}, 
           {"attribute2", "value2"}}; 
if (!item.IsActive) 
{ 
    checkboxHtmlAttributes.Add("disabled", "disabled"); 
} 
@Html.CheckBoxFor(m=>item.IsSelected, checkboxHtmlAttributes) 
+0

क्या यह वही विशेषता के साथ समान है? – J4N

+0

@JAN 'readonly' भी 'अक्षम' जैसा व्यवहार करता है। तो "readonly" केवल 'readonly' के लिए एकमात्र संभावित मान है और यदि आप "radonly = false" रखना चाहते हैं तो आपको विशेषता को छोड़ना होगा। तो यह वही है। – nemesv

संबंधित मुद्दे