2012-06-11 8 views
5

मुझे एमवीसी 3 प्रोजेक्ट में मेरे विचार के साथ एक अजीब समस्या है। मेरे पास डेटा संपादन (टेम्पलेट का उपयोग करके बनाया गया) के लिए एक मानक दृश्य है। जब मैं फॉर्म सबमिट करता हूं, तो मैं Name संपत्ति बदलता हूं, लेकिन जब मैं नियंत्रक से ब्राउज़र पर वापस आया, तब भी मुझे lorem मान दिखाई देता है। क्यूं कर ?एमवीसी 3 मॉडल सबमिट करने के बाद रीफ्रेश नहीं किया जा रहा है

@using (Html.BeginForm()) 
    { 
     @Html.EditorFor(model => model.Name) 
     <input type="submit" value="Save" /> 
    } 


    public ViewResult EditUserData(int id) 
    { 
     [...] 
     UserData model = new UserData(); 
     model.Name = "lorem";    

     return View("~/Views/UserDetails.cshtml", model); 
    } 

    [HttpPost] 
    public ViewResult EditUserData(UserData model) 
    { 
     model.Name = "ipsum"; 
     return View("~/Views/UserDetails.cshtml", model);  
    } 

public class ControlUserData 
{ 
    [...] 

    [Required] 
    [Display(ResourceType = typeof(Resources), Name = "UserNameFirst")] 
    public string Name { get; set; } 
} 
+0

ताज़ा के लिए पोस्ट कार्रवाई मारा जा रहा था? दृश्य स्टूडियो ब्रेकपॉइंट्स ?? – Shyju

+0

@ श्याजू हां, डीबगर ने सबमिट बटन को हिट करने के बाद एचटीपीपोस्ट की कार्रवाई को आमंत्रित किया – Tony

+0

क्यों 'साझा करें ("~/Views/UserDetails.cshtml", मॉडल) को साझा निर्देशिका में डालने और 'देखें (" उपयोगकर्ता विवरण ", मॉडल)'? –

उत्तर

7

आप ModelState से मूल्य को हटाने की जरूरत है, तो आप एक पोस्ट में इसे संशोधित करना चाहते हैं/मिलता है:

[HttpPost] 
public ViewResult EditUserData(UserData model) 
{ 
    ModelState.Remove("Name"); 
    model.Name = "ipsum"; 
    return View("~/Views/UserDetails.cshtml", model);  
} 

यह MVC behavoir में बनाया गया है: सभी Html.Helpers में मूल्यों को तरजीह ModelState वास्तविक मॉडल मानों पर संग्रह।

यहां इस बारे में एक अच्छा लेख है: ASP.NET MVC Postbacks and HtmlHelper Controls ignoring Model Changes

+0

में संशोधित किया गया है आप सही हैं, अब यह काम करता है। सुझावों के लिए धन्यवाद! – Tony

3

यह डिज़ाइन द्वारा है। एमवीसी यह मान रहा है कि आप यह देखना चाहते हैं कि पोस्ट एक्शन को संसाधित करते समय उपयोगकर्ता ने प्रारंभ में सबमिट किया था। this related stack overflow post देखें।

0

बस एक छोटा सा संपादित करें ... पूरे मॉडल

[HttpPost] 
public ViewResult EditUserData(UserData model) 
{ 
    UserData newmodel = new UserData(); 
    ModelState.Clear(); 
    model = newmodel; 
    return View("~/Views/UserDetails.cshtml", model);  
} 
संबंधित मुद्दे