是否可以在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 & Close</button>
<button type="submit" data-option="yes_add">Save & 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
的任何输入都只提交表单。是否有可能有多个提交并根据参数?
答案 0 :(得分:1)
我在表单中执行以下操作:
<button type="submit" name="Action" value="SAVE" ..
<button type="submit" name="Action" value="DELETE" ..
在我的控制器中:
public ActionResult Edit(string Action, MyViewModel model)
单击按钮时,只有该按钮(当提交按钮时)通过“操作”输入字段回发值。因此,单击“保存”按钮会发布“保存”等。因此,您可以使用该参数来确定触发的操作。它可以是您模型上的道具,也可以是它在上面的显示方式。
我不使用AJAX表单但它的工作方式应该类似。