asp.net mvc - How to modify a value being roundtripped to an MVC action method? -
अगर मेरे पास एक साधारण मॉडल है:
आदर्श: < सार्वजनिक वर्ग पशु मॉडेल {सार्वजनिक स्ट्रिंग प्रजातियां {सेट;}}}
देखें:
& lt;% = Html.TextBox ("प्रजातियां")% & gt;
क्रिया-विधि (पोस्ट):
पशु मॉडल मॉडल = नया पशुमॉडल (); // अद्यतन मॉडल UpdateModel (मॉडल); // अपडेट्स देखें Dataata.ModeState // सही वर्तनी अगर (model.Species == "catt") {model.Species = "cat"; } // वापसी दृश्य वापसी देखें (मॉडल);
तो एक पोस्ट पर कार्रवाई विधि को 'बिल्ली' की वर्तनी को 'बिल्ली' में सही माना जाता है।
समस्या यह है कि 'टेक्स्टबॉक्स के लिए स्रोत कोड 'वोडाडाटा.मॉडेलस्टेट से मूल्य लेगा, अगर इसमें' प्रजाति 'का मूल्य मिल जाएगा। इसका अर्थ है कि मेरा सही मान किसी पोस्टबैक पर अपडेट नहीं होता है क्योंकि 'कैट' प्राथमिकता लेता है।
तो मैंने सोचा - आह अच्छी तरह से मैं इसे इस तरह स्पष्ट कर दूंगा:
< कोड> & lt;% = Html.TextBox ("प्रजाति", मॉडल। प्रजातियों)% & gt;
हैरानी की बात है कि यह काम नहीं करता है और अभी भी ViewData.ModelState से मान लेता है। मुझे पूरा यकीन है कि यह MVC में एक बग है क्योंकि इस अधिभार के लिए स्रोत कोड को देखते हुए मुझे यह अधिभार मिला यह स्पष्ट रूप से इंगित करता है कि 'valueViewData' पैरामीटर गलत मानते हैं यदि 'मान' प्रदान किया जाता है (जो मैं स्पष्ट रूप से ऊपर कर रहा हूं):
सार्वजनिक स्थिर स्ट्रिंग टेक्स्ट बॉक्स (यह HtmlHelper htmlHelper, स्ट्रिंग नाम, ऑब्जेक्ट मान, IDictionary & lt; स्ट्रिंग, ऑब्जेक्ट & gt; html गुण) {Return InputHelper (html हेलर, इनपुट टाइप। टेक्स्ट, नाम, मान, (मान == रिक्त) / * उपयोग करेंदृश्य डेटा / / गलत / * है चेक / / true / * setId * /, सच / * है एक्स्प्लिकिट वैल्यू *,, html गुण); }
Unfortunatley हालांकि 'InputHelper' विधि एक पाठ बॉक्स के लिए इस संपत्ति का सम्मान नहीं करता है और अभी भी ViewDataDictionary में पहले दिखता है। यह इस शब्दकोश में 'catt' पाता है क्योंकि यह सीधे पोस्ट डेटा से आया था।
मुझे एक समाधान मिल गया है जब एक यूज़रट्रॉंट उपयोग किया जाता है, जो व्यू डॉटएक्साइड के लिए नल से गुज़रता है।
& lt;% HTML.Renderpartial ("AnimalControl", मॉडल, रिक्त); & Gt%;
इसका समाधान क्या है? मुझे यकीन है कि यह कहीं और प्रलेखित है, लेकिन मैं इसे खोजने के लिए नहीं लग सकता है। मैं मैन्युअल रूप से ViewDataDictionary को साफ़ करना नहीं चाहता हूं लेकिन मुझे कोई अन्य समाधान नहीं मिलता।
यह करता है
यदि आपके पास मॉडल में प्रजातियां हैं, तो आप इसे विन्डडाटा डिक्शनरी में क्यों भी रखते हैं?
< एचआर>नेरड डिनर ट्यूटोरियल में इस पोस्टिंग की जांच करने पर विचार करें:
नीचे कहां कहें, "एक व्यू मॉडेल पैटर्न का उपयोग करना" और उस की समीक्षा करें।
Comments
Post a Comment