2011-04-21 16 views
7

मुझे एक भयंकर परिदृश्य मिला है जो एक बूल को रोकता है? नियंत्रक को सही ढंग से वापस पोस्ट किया जा रहा है। यह एक बहुत ही विशिष्ट समस्या है इसलिए पुन: बनाने के लिए चरणों का पालन करें।एएसपी.NET एमवीसी 3 मॉडल बाध्यकारी बग

एप्लिकेशन को आईआईएस में वर्चुअल फ़ोल्डर के रूप में तैनात किया जाना चाहिए ताकि यूआरएल/वर्चुअल/होम/टेस्ट के बजाय होम/टेस्ट किया जा सके।

होम नियंत्रक:

[HttpGet] 
public ActionResult Test(int? temp, bool? testBool) 
{ 
    return View(testBool); 
} 

/होम/टेस्ट देखें (उस्तरा cshtml):

@model bool? 
@{ 
    ViewBag.Title = "Test"; 
} 

@using (Html.BeginForm("Test", "Home", FormMethod.Get)) 
{ 
    @Html.CheckBox("testBool", Model ?? false, new { onchange = "this.form.submit();" }) 
    @Html.Label(Model == true ? "True" : "False") 
} 

पद वापस bool पर? int की वजह से नियंत्रक को नहीं बनाता है? पैरामीटर सूची में इससे पहले। यह बूल डालकर हल किया जा सकता है? int से पहले? पैरामीटर सूची में लेकिन स्पष्ट रूप से आपको यह नहीं करना चाहिए। आईआईएस पर वर्चुअल फ़ोल्डर में नहीं होने पर यह ठीक काम करता है। एक समस्या तब भी मौजूद है जब POST विधि का उपयोग करना भी ऊन की बजाय बूल पोस्ट करना है? काम करता है लेकिन वर्चुअल फ़ोल्डर पर नहीं तो आवश्यक नहीं है, इसलिए इसे भी नहीं करना चाहिए।

क्या किसी और ने इसका अनुभव किया है और क्या ऐसा कुछ भी है जो बताता है कि क्यों बाध्यकारी विफल रहता है या यह सिर्फ एमवीसी 3 में एक बग है?

यदि यह सिर्फ एक बग है, तो क्या किसी को पता है कि बग रिपोर्ट सबमिट करने के लिए उचित एएसपी.NET एमवीसी चैनल क्या हैं?

अद्यतन:

मैं पाया है कि यदि आप कार्रवाई मानकों में नल चर के किसी भी संख्या है, केवल पहले भी कभी भी काम करेंगे और सभी दूसरों से भरा जा करने के लिए असफल हो जायेगी। किसी को पता है कि यह डिजाइन या बग द्वारा है?

उत्तर

1

स्पष्ट रूप से यह अभी भी एक मुद्दा है। सोचा था कि यह अब तक तय किया गया होगा। इस विशेष बग के आसपास एक तरीका यह है कि इसे Application_Start विधि में जोड़ना है।

ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider(); 

जो जोड़ना उचित तरीके से व्यवहार करने के लिए निरर्थक पैरामीटर की अनुमति देगा। मुझे आश्चर्य है कि यह बग अभी भी मौजूद है क्योंकि इसे दिसंबर में आरसी 2 के रूप में जाना जाता था।

लेख में रूट वैकल्पिक पैरामीटर के बीच का अंतर हैकड द्वारा यह है कि, आपके उदाहरण में, रूटिंग समस्या नहीं है। इस मामले में आप डेटा (या क्वेरीस्ट्रिंग) पोस्ट कर रहे हैं और यह आपके शून्य कार्यवाही पैरामीटर को ठीक से पॉप्युलेट नहीं कर रहा है। मैंने mvc3 स्रोत की जांच की है और यह नहीं देखते कि यह समस्या क्यों होनी चाहिए क्योंकि इसे डिबगिंग करना ठीक से काम करता है और अपेक्षित व्यवहार में स्रोत परिणामों के माध्यम से कदम उठाता है। मुझे काफी यकीन है कि यह तय नहीं किया गया है, भले ही स्कॉट गुथरी ने कहा कि यह अब तक होना चाहिए ...

+0

यह काम किया! अति उत्कृष्ट। निर्देश के अनुसार Global.asax.cs में आपने एप्लिकेशन_स्टार्ट विधि से जो लाइन कहा है उसे बस जोड़ा। चिंता करना शुरू कर रहा था किसी को भी इसका जवाब नहीं होगा। उम्मीद है कि भविष्य में अद्यतन में एमवीसी टीम द्वारा बग को हल किया जा सकता है। आपकी सहायता के लिए धन्यवाद. –

+0

बहुत बढ़िया, @ क्रिस। इसे आपके लिए तैयार करने में खुशी हुई। आश्चर्यजनक रूप से यह काम करता है जब स्थानीय डिबगिंग में मुझे आश्चर्य होता है कि मैंने अपने परीक्षण सर्वर पर किस संस्करण को स्थापित किया है ...:) – Buildstarted

+0

शायद आपके पास एमवीसी 3 का एक नया संस्करण है जो मैं करता हूं। मुझे यह जांचना होगा कि कोई नया संस्करण उपलब्ध है या नहीं। क्या आपके पास निश्चित रूप से वर्चुअल निर्देशिका जैसे वर्चुअल/होम/टेस्ट पर है? अगर कुछ नहीं किया जाता है तो कुछ बिट्स सही तरीके से काम करेंगे क्योंकि मैंने अपनी पोस्ट में विस्तार किया है। –

3

This आलेख आपके लिए उपयोग किया जा सकता है।

+0

यह एक समान बग है और इससे संबंधित हो सकता है। दुर्भाग्यवश, बग और वर्कअराउंड लगातार वैकल्पिक मार्ग मानों से संबंधित है जबकि मेरी समस्या यूआरएल के पैरामीटर के साथ है? –

+0

(+1) मैंने आपके द्वारा लिंक किए गए आलेख पर एक पोस्ट छोड़ा है, यह देखने के लिए कि क्या वहां कोई प्रतिक्रिया प्राप्त हो सकती है। –

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