आप दो सरल रूप हो, तो आप इस aproach का उपयोग कर सकते हैं:
आप दो अलग अलग आंशिक दृश्य पैदा करते हैं।
@model CustomerInfoModel
@using (Ajax.BeginForm("CustomerInfo", "Customer", new AjaxOptions { HttpMethod = "Post", OnBegin = "InfoLoading", OnComplete = "InfoCompleted" }, new { id = "info", @class = "form-horizontal" }))
{
<input type="text" class="form-control" name="Name" id="Name" value="@Model.Name" />
<input type="email" class="form-control" name="Email" id="Email" value="@Model.Email" />
<button type="submit" id="save-info" class="btn-medium red">Save</button>
}
और
@model CustomerPasswordChangeModel
@using (Ajax.BeginForm("CustomerPasswordChange", "Customer", new AjaxOptions { HttpMethod = "Post", OnBegin = "InfoLoading", OnComplete = "InfoCompleted" }, new { id = "change", @class = "form-horizontal" }))
{
<input type="password" class="form-control" name="OldPassword" id="OldPassword" value="" />
<input type="password" class="form-control" name="NewPassword" id="NewPassword" value="" />
<button type="submit" id="save-change" class="btn-medium red" autocomplete="off">Save</button>
}
अपने माता पिता के विचार में,
@Html.Partial("CustomerInfo", Model.CustomerInfo)
और नियंत्रक में
@Html.Partial("CustomerPasswordChange", Model.CustomerPasswordChange)
:
[HttpPost]
public ActionResult CustomerInfo([Bind(Include = "Name,Email")] CustomerInfoModel model)
{
if (ModelState.IsValid)
return new Json(new { success=true, message="Updated.", errors=null);
// do you logic
return new Json(new { success=false, message="", errors=getHtmlContent(ModelState.Values.SelectMany(v => v.Errors).ToList(), "ModelError"));
}
[HttpPost]
public ActionResult CustomerPasswordChange([Bind(Include = "OldPassword,NewPassword")] CustomerPasswordChangeModel model)
{
if (ModelState.IsValid)
return new Json(new { success=true, message="Updated.", errors=null);
// do you logic
return new Json(new { success=false, message="", errors=getHtmlContent(ModelState.Values.SelectMany(v => v.Errors).ToList(), "ModelError"));
}
यह वही करेगा जो आप करना चाहते हैं।
नोट: getHtmlContent विधि पृष्ठ पर प्रदर्शित होने के लिए एक त्रुटि संदेश उत्पन्न कर रहा है। कुछ खास नहीं है। यदि आवश्यक हो तो मैं इसे साझा कर सकता हूं।
यय ... उस प्रश्न के बावजूद निश्चित रूप से अस्पष्ट था, यह वही है जो मैं सुनना चाहता था: "यदि आप केवल फॉर्म अनुभाग में से किसी एक को अपडेट/बदलना चाहते हैं, तो इसका उपयोग किए बिना नहीं किया जा सकता"। अब तक ऐसा लगता है कि एएसपीनेट एमवीसी में तथाकथित विजेट को लागू करने के लिए एक साफ तरीका नहीं है। :/ –
यह एमवीसी की सीमा नहीं है - आप केवल पृष्ठ के हिस्से को अपडेट करने के लिए कह रहे हैं, इसलिए आपको कुछ क्लाइंट साइड (उदा। AJAX/JS) करना होगा क्योंकि सभी परिभाषाओं के अनुसार सभी HTML रूप सबमिट किए जाने पर पृष्ठ बदल देंगे। –
प्रश्न सिर्फ 'लोकप्रिय' बैज चिह्न मारा। आश्चर्यजनक रूप से यह देखने के लिए कि मैंने कितना सीखा है। इतना बेवकूफ सवाल। : डी –