使用操作链接执行表单操作并添加模型错误

时间:2013-08-13 09:19:07

标签: asp.net-mvc asp.net-mvc-3 razor

我有一个包含许多字段的表单,我使用标准表单标记回发:

@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进行验证,但是我只想说我现在要保留所有验证服务器端。

0 个答案:

没有答案