是否有一些简单的方法来处理来自同一表单的多个提交按钮?例如:
<;%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=“操作:取消”/>;
</表格>;
和控制器:
[HttpPost]
[多按钮(Name=“action”,Argument=“Save”)]
公共操作结果保存(MessageModel mm){…}
[HttpPost]
[多按钮(Name=“action”,Argument=“Cancel”)]
公共操作结果取消(MessageModel mm){…}
更新:Razor页面看起来提供了现成的相同功能。对于新的发展,它可能更可取