2012-02-04 11 views
11

मुझे एक रेज़ोर आंशिक दृश्य मिला है जिसमें व्यूमोडेल द्वारा समर्थित किया गया है, अन्य चीजों के साथ, UseDuo नामक एक बूल। मान लीजिए कि UseDuo संपत्ति सच है, और मैं अपने उस्तरा में निम्नलिखित कोड डालें:एचटीएमएल.किकबॉक्स- मॉडल मान सही होने के बावजूद चेक नहीं किया गया है

@Html.CheckBox("UseDuo", Model.UseDuo) @* Not checked *@ 
@Html.CheckBoxFor(m => m.UseDuo) @* Not checked *@ 
@Html.CheckBox("UseDuo2", Model.UseDuo) @* checked *@ 
@(Model.UseDuo ? "UseDuo=true" : "UseDuo=false") @* outputs UseDuo=true *@ 

पहले दो चेक बॉक्स आओ चेक आउट नहीं किया है, लेकिन तीसरा चेक किया गया है, और "के रूप में UseDuo = अंतिम पंक्ति आउटपुट सच"। क्या देता है? इन HTML मददगारों की मेरी समझ के अनुसार, सभी तीन चेकबॉक्सों की जांच की जानी चाहिए। लेकिन ऐसा लगता है कि अगर मेरे चेकबॉक्स का नाम मेरी मॉडल संपत्ति के नाम से मेल खाता है, तो यह ठीक से जांचने से इंकार कर देता है।

मैंने नेट एमवीसी स्रोतों में डीबग करने की कोशिश की, लेकिन डीबगर ने मुझे कई चर के लिए मूल्य देने से इनकार कर दिया, जिससे कि बहुत मदद नहीं मिली।

संपादित करें: बस एहसास हुआ कि यहां कोई वास्तविक प्रश्न नहीं है। मेरा सवाल: पहले दो बक्से क्यों चेक नहीं किए गए हैं?

+1

यह पोस्ट में होता है, या हमेशा? –

+0

यकीन नहीं है कि मैं सवाल समझता हूं। इस रेजर वाले पृष्ठ को जीईटी के साथ लाया जा रहा है। – eliah

उत्तर

19

तो @Html.CheckBoxFor(m => m.UseDuo) एक गैर जाँच चेकबॉक्स renders और यह पुष्टि कर लेने Model.UseDuo = true उसके बाद ही संभव कारण पहले से ही है कि वहाँ modelstate कि अपने मॉडल से विरोध हो एक UseDuo मूल्य है। यह सुनिश्चित करने के इस दृश्य लौटने से पहले इसे हटाने की कोशिश:

ModelState.Remove("UseDuo"); 

या पूरे करने के लिए modelstate स्पष्ट:

ModelState.Clear(); 

अब चेक बॉक्स सहायक अपने मॉडल से मूल्य का चुनाव करेगा। यदि चेकबॉक्स चेक किया गया है तो आपको मॉडल कोड में UseDuo मान डालने के लिए आपके कोड का कौन सा हिस्सा मिलना होगा।

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