これを行うには、Ajax.BeginForm() を使用して部分ビューを送信します。
//In Partail View
@model SomeModel
@using (Ajax.BeginForm("SomeActionName", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "targetId"})) {
@Html.EditorFor(mode=>model.FirstText)
@Html.EditorFor(mode=>model.SecText)
<input type="submit" value="save">
}
//In Controller
public ActionResult SomeAction(SomeModel model)
{
return PartaiulView(model);
}
ここで部分ビューを検証できます。注: Ajax.BeginForm を使用してフォームを送信するときは、結果がビューに表示される" UpdateTargetId " を指定する必要があります。
//In View
<div id="targetId">
@Html.Partail("PartialView")
</div>
または、モデルが有効である場合に別のアクションにリダイレクトしたい場合は、アクションを変更します
public ActionResult SomeAction(SomeModel model)
{
if(ModelState.IsValid)
{
return Json(new {redirect = @Url.Action("SomeAction","SomeController")})
}
return PartaiulView(model);
}
次に、部分ビューで Ajax.BeginFormのOnSuccessメソッドを呼び出すことができます
@using (Ajax.BeginForm("SomeActionName", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "targetId",OnSuccess="success"}))
{
}
<script type="text/javascript">
function success(data)
{
if(data.redirect)
{
windows.location = data;
}
}
</script>
どちらがあなたに適しているか両方をチェックしてください。