は、あなたがこの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メソッドは、単にページに表示するエラーメッセージを生成しています。特別なことはありません。私は必要に応じて共有することができます。
よろしくお願いします。その質問にもかかわらず、これは確かに私が聞きたかったものです。「フォームセクションの1つを更新/変更したい場合は、これを使用せずにはできません。 これまでのところ、asp.net mvcにいわゆるウィジェットを実装するためのきれいな方法がないようです。 :/ –
これはMVCの制限ではありません。ページの一部のみを更新して、クライアント側(AJAX/JSなど)にする必要があります。 –
質問に「人気の」バッジマークがあります。私がどれくらい学んだかは驚くほどです。そんなばかげた質問:D –