gpt4 book ai didi

c# - 如何处理 ASP.NET MVC 框架中的多个提交按钮?

转载 作者:bug小助手 更新时间:2023-10-28 10:53:12 24 4
gpt4 key购买 nike

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

<% Html.BeginForm("MyAction", "MyController", FormMethod.Post); %>
<input type="submit" value="Send" />
<input type="submit" value="Cancel" />
<% Html.EndForm(); %>

知道如何在 ASP.NET Framework Beta 中执行此操作吗?我搜索过的所有示例中都有一个按钮。

最佳答案

这里是一个主要基于来自 Maarten Balliauw 的帖子和评论的多提交按钮问题的基本干净的基于属性的解决方案。 .

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MultipleButtonAttribute : ActionNameSelectorAttribute
{
public string Name { get; set; }
public string Argument { get; set; }

public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
{
var isValidName = false;
var keyValue = string.Format("{0}:{1}", Name, Argument);
var value = controllerContext.Controller.ValueProvider.GetValue(keyValue);

if (value != null)
{
controllerContext.Controller.ControllerContext.RouteData.Values[Name] = Argument;
isValidName = true;
}

return isValidName;
}
}

Razor :

<form action="" method="post">
<input type="submit" value="Save" name="action:Save" />
<input type="submit" value="Cancel" name="action:Cancel" />
</form>

和 Controller :

[HttpPost]
[MultipleButton(Name = "action", Argument = "Save")]
public ActionResult Save(MessageModel mm) { ... }

[HttpPost]
[MultipleButton(Name = "action", Argument = "Cancel")]
public ActionResult Cancel(MessageModel mm) { ... }

更新: Razor pages看起来提供开箱即用的相同功能。对于新的开发,它可能更可取。

关于c# - 如何处理 ASP.NET MVC 框架中的多个提交按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/442704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com