所以,我正在创建一个管理页面,我想在上面放置多个表单。所以,我尝试使用 Partial View 和 RenderAction。
我的管理员索引视图:
@model Rad.ViewModels.AdminViewModel
@{
ViewBag.Title = "Admin";
}
<h2>Admin</h2>
<div>
@{ Html.RenderAction("AddProduct"); }
</div>
我的部分观点:
@model Rad.ViewModels.AdminAddProductViewModel
@using (Html.BeginForm("AddProduct", "Admin"))
{
<h1>@Html.LabelFor(model => model.Name)</h1>
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
<input type="submit" value="Add"/>
}
我的管理员控制器:
public class AdminController : Controller
{
//
// GET: /Admin/
public ActionResult Index()
{
return View();
}
public ActionResult AddProduct()
{
return PartialView();
}
[HttpPost]
public ActionResult AddProduct(AdminAddProductViewModel data)
{
if (ModelState.IsValid)
{
}
return View("Index");
}
}
问题在于 AddProduct 的 HttpPost 版本。如果我将其保留为 return View("Index"),它将进入无限循环。但是,如果我返回 PartialView(data),它会正确显示错误,但它周围没有索引视图。所以,它只显示部分视图。有没有办法在一个页面上有多个表单并将服务器端验证返回到页面?