2012-06-01 26 views
9

मैं के साथ 2 इनपुट प्रकार = पाठ से कोई पृष्ठ है ..क्षेत्रों सफलता के बाद साफ

@model MVC3.ViewModel.TalkToUsVM 

@using (Html.BeginForm()) 
{ 
    <ul> 
     <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Name)</li> 
     <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Email)</li> 
    </ul> 

    <input type="submit" value="Save"/> 
} 
मेरी नियंत्रक में

मैं यह कर:

[HttpPost] 
public ActionResult Create(TalkToUsRequest talkToUsRequest) 
{ 
    var vm = new TalkToUsVM(); 

    if (TryValidateModel(talkToUsRequest)) 
    { 
     vm.Result = "Success"; 

     return View("Create",vm); 
    } 

    vm = new TalkToUsVM 
    { 
     Result = "Errrooooooor", 
     TalkToUsRequest = talkToUsRequest 
    }; 

    return View(vm); 
} 

तो समस्या .. कि मेरा मॉडल मान्य है , मैंने परिणाम "सफलता" पर सेट किया है और इस बिंदु में vm.TalkToUsRequest शून्य है .. लेकिन जब पृष्ठ प्रस्तुत किया जाता है, तो सभी फ़ील्ड एक ही मान के साथ होते हैं जब मैं सबमिट करता हूं .. यहां तक ​​कि मैं vm.TalkToUsRequest = null को सेट करता हूं !! मैं इस फ़ील्ड को कैसे साफ़ कर सकता हूं?

उत्तर

44

तो इस परिदृश्य में यदि आप एक ही दृश्य पर वापस लौटते हैं तो आपको अपने मॉडल स्थिति को साफ़ करना होगा। निम्नलिखित का प्रयास करें:

ModelState.Clear(); 
    return View(vm); 
} 
+0

अच्छा .. लेकिन ऐसा क्यों होता है यदि मैं TalkToUsRequest पर शून्य स्थापित कर रहा हूं? – MuriloKunze

+2

यह डिफ़ॉल्ट व्यवहार है। आपके विचार में आपका एमवीसी सहायक नियंत्रण नए मान को प्रस्तुत करता है यदि यह पहचानता है कि आपका मॉडल स्थिति बदल गई है। एक परिदृश्य की कल्पना करें, जहां आप किसी फॉर्म पर सबमिट बटन पर क्लिक करेंगे। जो नियंत्रक पर एक कार्रवाई मारा जाएगा। आप कुछ सत्यापन करेंगे और यदि चीजें विफल हो जाती हैं तो आप कुछ त्रुटि के साथ उसी दृश्य पर वापस जाते हैं। उस स्थिति में आप मॉडल मानों को व्यवहार में रखना चाहते हैं और कुछ त्रुटि संदेश दिखा सकते हैं। और अगर सत्यापन नियंत्रक पर गुजरता है तो आप किसी अन्य पेज पर रीडायरेक्ट करेंगे। – Lav

0

आपका जवाब:

TryUpdateModel (अपने मॉडल यहाँ नाम);

और यह आपके विचार राज्य अपडेट करेगा

और आप भी एक ही समय में सब Modelstate.error साफ़ करना चाहते हैं आप भी उपयोग कर सकते हैं:

ModelState.Clear();

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