如何在ASP.NET MVC框架中处理多个提交按钮?

是否有一些简单的方法来处理来自同一表单的多个提交按钮?例如:

<%BeginForm(“MyAction”,“MyController”,FormMethod.Post);%&燃气轮机;
<输入type=“submit”value=“Send”/>
<输入type=“submit”value=“Cancel”/>
<%Html.EndForm();%&燃气轮机;

你知道如何在ASP.NET框架测试版中实现这一点吗?我搜索过的所有例子都有一个按钮

这是一个基于属性的多提交按钮问题解决方案,主要基于Maarten Balliauw的帖子和评论

[AttributeUsage(AttributeTargets.Method,AllowMultiple=false,Inherited=true)]
公共类MultipleButtonAttribute:ActionNameSelectorAttribute
{
公共字符串名称{get;set;}
公共字符串参数{get;set;}
public override bool IsValidName(ControllerContext ControllerContext,string actionName,MethodInfo MethodInfo)
{
var isValidName=false;
var keyValue=string.Format(“{0}:{1}”,名称,参数);
var value=controllerContext.Controller.ValueProvider.GetValue(keyValue);
if(值!=null)
{
controllerContext.Controller.controllerContext.RoutedData.Values[Name]=参数;
isValidName=true;
}
返回isValidName;
}
}

剃刀:

<form action=”“method=“post”>
<输入type=“submit”value=“Save”name=“action:Save”/>
<输入type=“提交”value=“取消”name=“操作:取消”/>
&lt/表格>

和控制器:

[HttpPost]
[多按钮(Name=“action”,Argument=“Save”)]
公共操作结果保存(MessageModel mm){…}
[HttpPost]
[多按钮(Name=“action”,Argument=“Cancel”)]
公共操作结果取消(MessageModel mm){…}

更新:Razor页面看起来提供了现成的相同功能。对于新的发展,它可能更可取

发表评论