我有一个包含许多字段的表单,我使用标准表单标签发回这些字段:
@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 进行验证,但我只想说我现在想保留所有验证服务器端。