2012-08-31 11 views
6

हमने हाल ही में एक मौजूदा नेट के लिए उन्नत एक दृश्य में bools renders 4 MVC 3 परियोजना .NET 4.5 और MVC 4.कैसे में MVC4 के टूटने परिवर्तन को हल करने के लिए कि यह कैसे

कहाँ हम एक में बात की इस तरह था दृश्य:

@Model.MyBool 
<input type="hidden" name="foo" value="@Model.MyBool" /> 

कि रेंडर करने के लिए प्रयोग किया जाता है के रूप में:

True 
<input type="hidden" name="foo" value="True" /> 

या:

False 
<input type="hidden" name="foo" value="False" /> 

लेकिन अब यह renders के रूप में:

True 
<input type="hidden" name="foo" value="value" /> 

या:

False 
<input type="hidden" name="foo" /> 

यही है, जहां एक बूलियन संपत्ति एक छिपा इनपुट के मूल्य विशेषता के मान के रूप में ध्यान में रखते हुए प्रदान की गई है, यह 'नहीं करता है टी True या False (जैसा कि यह कहीं और करता है) के रूप में प्रस्तुत करता है, बल्कि value के रूप में प्रस्तुत करता है, या पूरी तरह से विशेषता को याद करता है।

दो सवाल:

  1. WTF?
  2. क्या कोई आसान तरीका है कि मैं अपने आवेदन को तोड़ने वाले स्थानों की भीड़ को ठीक कर सकता हूं? यह एक बड़ा एप्लीकेशन है और मैं हर जगह पहचानने की कोशिश करने के लिए हर एक दृश्य के माध्यम से ट्रैवलिंग नहीं करता हूं, मैंने इनपुट क्षेत्र में एक बूल लगाया है।

उत्तर

3

डब्ल्यूटीएफ?

Razor 2 conditional attributes

वहाँ एक अच्छा आसान तरीका मैं स्थानों है कि यह मेरा आवेदन टूट गया है की भीड़ को ठीक कर सकते है?

कोई भी नहीं मैं सोच सकता हूं (यही कारण है कि आपको @Html.Hidden("foo", Model.MyBool) का उपयोग करना चाहिए था)। मेरा सबसे अच्छा अनुमान Resharper के संरचित प्रतिस्थापन जैसे कुछ का उपयोग करेगा।

+0

शर्म की बात है। मैंने 'Html.Hidden (...) 'का उपयोग न करने का प्रयास किया क्योंकि मैं अपने hiddens पर' आईडी 'नहीं चाहता था (उसी पृष्ठ पर एक ही आंशिक दृश्य के कई उदाहरण हैं)। और जिस तरह से मैंने इसे और अधिक पठनीय कोड के लिए लिखा, इमो। खैर, यह वैसे भी मेरा बहाना है। धन्यवाद। – teedyay

+0

@teedyay प्रत्येक छिपे हुए पर 'आईडी' रखने में क्या गड़बड़ है? –

+0

क्योंकि मेरे पास समान आंशिक दृश्य के कई उदाहरण थे, जो मुझे एक ही 'आईडी' के साथ कई तत्व दिए गए थे, जो कि अच्छा नहीं है। – teedyay

2

लगता है कि यह काम कर रहा है:

<input type="hidden" name="foo" value="@Model.MyBool.ToString()" /> 
+0

हां, यह एक उदाहरण को ठीक करने का तरीका है। मैं उम्मीद कर रहा था कि व्यवहार को वापस बदलने का एक तरीका होगा पूरी साइट इसलिए मुझे हर जगह खोजने के लिए हर दृश्य के माध्यम से शिकार करने की ज़रूरत नहीं थी, मुझे इसे बदलने की जरूरत थी। मुझे दुर्भाग्य से कोई नहीं मिला। – teedyay