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

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

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

任何想法如何在ASP.NET Framework Beta中执行此操做? 我搜索过的全部示例中都包含一个按钮。 ide


#1楼

大卫·芬德利(David Findley)在他的ASP.Net Weblog上撰写了有关执行此操做的三种不一样选择的信息。 spa

阅读本文中具备相同形式的多个按钮,以查看他的解决方案以及每种解决方案的优缺点。 恕我直言,他提供了一种很是优雅的解决方案,该方案利用了装饰动做的属性。 code


#2楼

对于每一个提交按钮,只需添加: orm

$('#btnSelector').click(function () {

    $('form').attr('action', "/Your/Action/);
    $('form').submit();

});

#3楼

我试图对全部解决方案进行综合,并建立了一个[ButtenHandler]属性,该属性使处理表单上的多个按钮变得容易。 blog

我已经在ASP.NET MVC中的 CodeProject 多个参数化(可本地化)表单按钮上对其进行了描述。 索引

要处理此按钮的简单状况: ip

<button type="submit" name="AddDepartment">Add Department</button>

您将拥有相似如下操做方法的内容: element

[ButtonHandler()]
public ActionResult AddDepartment(Company model)
{
    model.Departments.Add(new Department());
    return View(model);
}

请注意,按钮的名称如何与操做方法的名称匹配。 本文还介绍了如何具备带有值的按钮和带有索引的按钮。 get


#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();
        }
相关文章
相关标签/搜索