ASP.NET MVC两种不同的按钮在表单中提交

时间:2014-06-25 09:07:32

标签: c# asp.net-mvc forms

我有一个带有两个按钮的MVC表单,页面基本上加载了一条记录,用户有一个批准或拒绝按钮

 <button id="btnAcceptAll" class="btn btn-lg btn-success">Accept</button>
 <button id="btnRejectAll" class="btn btn-lg btn-danger">Reject</button>

我想将它保存为单个表单,因为我也使用了很多隐藏的值。

基本上在Form Post中,我想能够区分按下哪个按钮。

目前我的表格发布..

[ActionName("Index")]
[HttpPost]
public ActionResult IndexPost(QcMatchViewModel model)
{
    //Save Record and Redirect
    return RedirectToAction("Index");
}

4 个答案:

答案 0 :(得分:4)

您可以为具有相同值的两个按钮添加名称attribute,然后添加value属性。

<button id="btnAcceptAll" name="button" value="accept" class="btn btn-lg btn-success">Accept</button>
<button id="btnRejectAll" name="button" value="reject" class="btn btn-lg btn-danger">Reject</button>

在您的操作方法中,您需要添加额外的button参数,该参数将填充按下按钮的value属性。

[ActionName("Index")]
[HttpPost]
public ActionResult IndexPost(string button, QcMatchViewModel model)
{
    //Save Record and Redirect
    return RedirectToAction("Index");
}

或者您可以将其他Button属性添加到视图模型中。

查看this帖子了解其他一些功能。

答案 1 :(得分:1)

试试这个

on View:

<input type="submit" id="btnAcceptAll" name="btnAcceptAll" value"Accept" class="btn btn-lg btn-success"/ >
<input type="submit" id="btnRejectAll" name="btnRejectAll" value"Reject" class="btn btn-lg btn-success"/ >

在控制器上:

[ActionName("Index")]
    [HttpPost]
    public ActionResult IndexPost(FormCollection form, QcMatchViewModel model)
    {
      if(form["btnAcceptAll"]!=null)
       {
        //Accept Button Code
       }
       if(form["btnRejectAll"]!=null)
       {
        //Reject Button Code
       }
        //Save Record and Redirect
        return RedirectToAction("Index");
    }

答案 2 :(得分:0)

有两种可能的方式:

1&GT;在任一按钮单击上将该模型的一个属性设置为某个值。即,让我们说有一个名为&#34;接受&#34;点击btnAcceptAll,使用javascript / jquery将其值设置为true(将accept作为隐藏字段),然后使用action方法获取该值。

2 - ;有2种不同的动作方法,即acceptChanges和RejectChanges,并根据单击的按钮调用它们(再次使用Jquery在按钮点击时设置不同的表单动作)

答案 3 :(得分:0)

我想到的方法 您可以在模型中包含一个字段,其值可以由隐藏字段填充 所以你将在帖子上获得这个价值。

现在要填充此隐藏字段中的值,您可以截取按钮点击事件。

$(".btn").click(function(){
//fill hidden field value here
});