您可以通过使用 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>
检查两种方式哪一种适合您。