C# 使用Ajax.BeginForm获取控制器上的按钮Id

C# 使用Ajax.BeginForm获取控制器上的按钮Id,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,目标: 我有一篇关于Ajax.BeginForm的帖子,我的目标是获取控制器上的按钮Id。我见过使用Html.BeginForm的示例,但我需要一个Ajax表单 代码:C#MVC3 视图: 您可以按如下方式获取按钮的值: @using (Ajax.BeginForm("Save", "Valoration", new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "HvmDetailTabStrip", OnSuccess = "On

目标:

我有一篇关于Ajax.BeginForm的帖子,我的目标是获取控制器上的按钮Id。我见过使用Html.BeginForm的示例,但我需要一个Ajax表单

代码:C#MVC3

视图:


您可以按如下方式获取按钮的值:

@using (Ajax.BeginForm("Save", "Valoration", new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "HvmDetailTabStrip", OnSuccess = "OnSuccessSaveValoration" }))
    { 
        <div id ="HvmDetailTabStrip">
                @(Html.Partial("_ValorationDetail"))
        </div>
        <button type="submit" name="submitButton" value="db1"></button>       
        <button type="submit" name="submitButton" value="db2"></button>       
    }
或者,如果传入方法的参数数无关紧要,则可以使用以下方法:

[HttpPost]
        public ActionResult Save(ValorationModel model, string submitButton)
        {
           if(submitButton == "db1"){
            var result = ValorationService.Save(ValorationModel);
           }else
           {
              ....
           }         

            return PartialView("_ValorationDetail", ValorationModel);
        }

另一种解决问题的方法是在这里

我不确定这是否会起作用,因为有2个
submit
按钮是无效代码,可能会被浏览器忽略。如果用户点击回车键,他会点击哪个按钮?但是如果没有输入,它允许用户通过按enter/return键提交表单,当用户单击按钮时,您可以使用一些javascript更改隐藏的输入值!!非常有用!:D
@using (Ajax.BeginForm("Save", "Valoration", new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "HvmDetailTabStrip", OnSuccess = "OnSuccessSaveValoration" }))
    { 
        <div id ="HvmDetailTabStrip">
                @(Html.Partial("_ValorationDetail"))
        </div>
        <button type="submit" name="submitButton" value="db1"></button>       
        <button type="submit" name="submitButton" value="db2"></button>       
    }
[HttpPost]
    public ActionResult Save(ValorationModel model)
    {
       string buttonValue = Request["submitButton"];

       if(buttonValue == "db1"){
        var result = ValorationService.Save(ValorationModel);
       }else
       {
          ....
       }         

        return PartialView("_ValorationDetail", ValorationModel);
    }
[HttpPost]
        public ActionResult Save(ValorationModel model, string submitButton)
        {
           if(submitButton == "db1"){
            var result = ValorationService.Save(ValorationModel);
           }else
           {
              ....
           }         

            return PartialView("_ValorationDetail", ValorationModel);
        }