当前位置: 首页 > 面试题库 >

如何处理ASP.NET MVC Framework中的多个提交按钮?

段干恺
2023-03-14
问题内容

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

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

任何想法如何在ASP.NET Framework Beta中做到这一点?我搜索过的所有示例中都包含一个按钮。


问题答案:

在很大程度上基于MaartenBalliauw的帖子和评论,这是一个针对多个提交按钮问题的基于属性的,几乎干净的解决方案。

[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>

and controller:

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

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


 类似资料:
  • 问题内容: 假设您以HTML表单创建向导。一键向后退,一键向前。当您按下时,由于 后退 按钮首先出现在标记中,它将使用该按钮提交表单。 例: 我想确定当用户按下时使用哪个按钮提交表单。这样,当您按下向导时,向导将移至下一页,而不是上一页。您是否必须使用此功能? 问题答案: 我希望这有帮助。我只是在按右边的按钮。 这样,按钮位于按钮的左侧,但在HTML结构中排在第一位: 优于其他建议的好处:没有Ja

  • 问题内容: 我有以下代码,基本上它正在执行两个操作。第一个是将我的表单数据提交到google电子表格,另一个操作是将我的第二个表单文本框值数据提交到另一个页面文本框值。这个怎么做? 从上面可以看到,这是第一页,第二页是第二种形式的Sankranthi_Reserv2.asp。我想在那儿传递文本框值,所以问题是第一种形式是提交给Google文档并存储数据,但是第二种形式需要将手机号码文本框值传递给下

  • 问题内容: 我正在尝试向redux-form添加第二个提交按钮。 这两个按钮都应调度一个保存数据的操作,但是应根据所按下的按钮将用户路由到其他页面。 因此,我定义了一个处理程序,该处理程序作为prop 传递给表单。 但据我所知,只有表单 数据 传递给此处理程序: 注意的文档: 传递给 或传递给的函数。它将运行同步和异步验证,并且,如果表单有效,它将使用表单数据的内容进行调用。 我所缺少的是一种还将

  • 问题内容: 我有一个带有一个电子邮件输入和两个提交按钮的表单,用于订阅和取消订阅新闻通讯: 我也有上课表格: 我必须编写自己的clean_email方法,并且我需要知道表单是通过哪个按钮提交的。但是提交按钮的值不在字典中。否则我可以获取按钮的值吗? 问题答案: 你可以在方法中使用来在验证之前访问POST数据。它应包含一个称为或取决于所按下按钮的键。

  • 不知是否有人能帮助我。 我试图运行下面的代码,我正在使用带有多个的表单。 我的问题是,当我运行这个,我收到以下错误:

  • 我有一个登录表单,有电子邮件和密码字段。我有两个提交按钮,一个用于登录(如果用户已经注册),另一个用于注册(新用户)。由于登录操作和注册操作是不同的,所以我需要一些方法来将带有所有发布数据的请求重定向到其各自的操作。有没有一种方法可以在Laravel 4中以纯Laravel的方式实现这一点?