現在、研修生として ASP.NET MVC 4 プロジェクトに取り組んでおり、管理パネルを実装しようとしています。目標は、すべてのユーザーをグリッド (MVC.GRID) に表示し、同じページで編集することです。グリッド上のすべてのユーザーを表示することができました。ユーザーが選択されると、グリッドの下に情報が表示され、(ajax/jquery を介して) フォームに配置されます。
問題は、フォームの検証が、グリッドがあるページではなく、新しいページに表示されていることです。そして、私はその理由がわかりません..
以下は私のコードです。
これは、フォームが配置される場所です。
<div id="order-content">
<p class="muted">
Select a user to see his or her information
</p>
</div>
フォーム自体 (部分ビュー "_UserInfo):
@using (Ajax.BeginForm("EditUser", "Admin", FormMethod.Post,
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
UpdateTargetId = "order-content"
}))
{
@Html.Bootstrap().ValidationSummary()
@Html.Bootstrap().ControlGroup().TextBoxFor(x => x.Id)
@Html.Bootstrap().ControlGroup().TextBoxFor(x => x.Name)
@Html.Bootstrap().ControlGroup().TextBoxFor(x => x.Password)
@Html.Bootstrap().SubmitButton().Text("Opslaan").Style(ButtonStyle.Primary)
}
行が選択されるとユーザー情報を表示する JQuery:
$(function () {
pageGrids.usersGrid.onRowSelect(function (e) {
$.post("/Admin/GetUser?id=" + e.row.Id, function (data) {
if (data.Status <= 0) {
alert(data.Message);
return;
}
$("#order-content").html(data.Content);
});
});
});
私のアドミンコントローラー:
[HttpPost]
public JsonResult GetUser(int id)
{
var user = _UserService.Get(id);
var input = _EditInputMapper.MapToInput(user);
if (user == null)
return Json(new { Status = 0, Message = "Not found" });
return Json(new { Content = RenderPartialViewToString("_UserInfo", input) });
}
[HttpPost]
public ActionResult EditUser(AdminUserEditInput input)
{
if (ModelState.IsValid)
{
// todo: update the user
return View();
}
// This is where it probably goes wrong..
return PartialView("_UserInfo",input);
}
私のコードの何が問題なのか誰にもわかりますか?
ありがとうございました。