是否可以在MVC Ajax表单中有多个提交按钮并传递参数?

时间:2018-04-27 15:19:18

标签: ajax asp.net-mvc

是否可以在MVC中为ajax表单提供多个提交按钮?我有一个表单,我希望有一个以上的提交按钮,并且单击按钮的结果由控制器中的条件语句控制。

请考虑我在我的应用程序中使用的以下Ajax代码。它是一个ajax表单,在Create控制器提交时会调用Car方法。

@using (Ajax.BeginForm("Create", "Car", new AjaxOptions {
    HttpMethod = "POST",
    OnSuccess = "NotifySuccess",
    OnFailure = "NotifyFailure" }))
{
    ..form code

    <button type="submit" data-option="no_add">Save &amp; Close</button>
    <button type="submit" data-option="yes_add">Save &amp; Add</button>
}

正如您所看到的,我已经提交了两个提交按钮,我的计划是使用数据属性我可能在控制器中有一个条件来定义结果。

例如,如果您点击Save & Close,只需点击Save & Add,您就会被带回索引页面,您可能会被带到另一个表格中选项参数已定义。这是我的控制器中创建方法的快照。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Car car, string something)
{
    if(something = "whatever")
        try
            {
                if (ModelState.IsValid)
                {
                    unitOfWork.CarRepository.Insert(car);
                    unitOfWork.Save(); 
                    return RedirectToAction("Index");
                }
            }
            catch (DataException)
            {
              ...handle catch
            }
        return View(car);
    else {
        ...do something else
    }
}  

我遇到的问题是类型submit的任何输入都只提交表单。是否有可能有多个提交并根据参数?

在控制器级别控制它们

1 个答案:

答案 0 :(得分:1)

我在表单中执行以下操作:

<button type="submit" name="Action" value="SAVE" ..
<button type="submit" name="Action" value="DELETE" ..

在我的控制器中:

public ActionResult Edit(string Action, MyViewModel model)

单击按钮时,只有该按钮(当提交按钮时)通过“操作”输入字段回发值。因此,单击“保存”按钮会发布“保存”等。因此,您可以使用该参数来确定触发的操作。它可以是您模型上的道具,也可以是它在上面的显示方式。

我不使用AJAX表单但它的工作方式应该类似。