我有一个包含许多字段的表单,我使用标准表单标记回发:
@using (Html.BeginForm("SubmitForm", "ControllerName", FormMethod.Post))
{
//fields and submit button
}
同样在我的表格上,我有一个列出承包商的网格,我有一个按钮,可以将承包商添加到列表中。我这样做的方法是创建按钮作为提交,并使用表单提交操作来完成工作。我很确定这不是最好的方法。这是控制器上的操作:
[HttpPost]
public ActionResult SubmitForm(string btnSubmit, SupplySelectionViewModel model)
{
switch (btnSubmit)
{
case "addContractor":
if (model.ContractorId > 0)
{
//add contractor to parent record and reload whole page
return RedirectToAction("Edit", new { id = model.ProposalId });
}
else
{
ModalState.AddModelError("Select a contractor");
//Return view with error
return View("Edit", model);
}
case "save":
if (ModelState.IsValid)
{
//Save whole model and redirect back to home page
}
//Return to view with validation erros
return View("Edit", model);
}
}
如您所见,我使用按钮的名称来决定做什么(添加承包商或提交表格)。我想要的是将添加承包商作为动作链接并发布到单独的动作。如果没有选择承包商,如果我添加模型错误,如何在不传递整个模型的情况下执行此操作?我知道我可以使用jquery进行验证,但是我只想说我现在要保留所有验证服务器端。