【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
是否有一些简单的方法可以处理来自同一表单的多个提交按钮? 例:
<% Html.BeginForm("MyAction", "MyController", FormMethod.Post); %>
<input type="submit" value="Send" />
<input type="submit" value="Cancel" />
<% Html.EndForm(); %>
任何想法如何在ASP.NET Framework Beta中执行此操作? 我搜索过的所有示例中都包含一个按钮。
#1楼
大卫·芬德利(David Findley)在他的ASP.Net Weblog上撰写了有关执行此操作的三种不同选择的信息。
阅读本文中具有相同形式的多个按钮,以查看他的解决方案以及每种解决方案的优缺点。 恕我直言,他提供了一种非常优雅的解决方案,该方案利用了装饰动作的属性。
#2楼
对于每个提交按钮,只需添加:
$('#btnSelector').click(function () {
$('form').attr('action', "/Your/Action/);
$('form').submit();
});
#3楼
我试图对所有解决方案进行综合,并创建了一个[ButtenHandler]属性,该属性使处理表单上的多个按钮变得容易。
我已经在ASP.NET MVC中的 CodeProject 多个参数化(可本地化)表单按钮上对其进行了描述。
要处理此按钮的简单情况:
<button type="submit" name="AddDepartment">Add Department</button>
您将拥有类似以下操作方法的内容:
[ButtonHandler()]
public ActionResult AddDepartment(Company model)
{
model.Departments.Add(new Department());
return View(model);
}
请注意,按钮的名称如何与操作方法的名称匹配。 本文还介绍了如何具有带有值的按钮和带有索引的按钮。
#4楼
我没有足够的代表在正确的位置发表评论,但我整天都在此发表评论,所以想分享。
尝试实现“ MultipleButtonAttribute”解决方案时, ValueProvider.GetValue(keyValue)
将错误地返回null
。
原来,当我应该将System.Web.MVC版本3.0设置为4.0时(其他程序集是4.0)。 我不知道为什么我的项目无法正确升级,并且我没有其他明显的问题。
因此,如果您的ActionNameSelectorAttribute
不起作用,请检查。
#5楼
//model
public class input_element
{
public string Btn { get; set; }
}
//views--submit btn can be input type also...
@using (Html.BeginForm())
{
<button type="submit" name="btn" value="verify">
Verify data</button>
<button type="submit" name="btn" value="save">
Save data</button>
<button type="submit" name="btn" value="redirect">
Redirect</button>
}
//controller
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
[HttpPost]
public ActionResult About(input_element model)
{
if (model.Btn == "verify")
{
// the Verify button was clicked
}
else if (model.Btn == "save")
{
// the Save button was clicked
}
else if (model.Btn == "redirect")
{
// the Redirect button was clicked
}
return View();
}
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3145959