使用Ajax.BeginForm在控制器上获取Button Id

时间:2012-12-11 08:13:21

标签: c# asp.net-mvc-3

目标:

我有一个带有Ajax.BeginForm的帖子,我的目标是获取控制器上的Button 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" style="display:none" id="db1"></button>       
    <button type="submit" style="display:none" id="db2"></button>       
}        

控制器:

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

    return PartialView("_ValorationDetail", ValorationModel);
}

1 个答案:

答案 0 :(得分:2)

您可以按这样获取按钮的值:

@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);
        }

其他方式如何解决您的问题是ASP.Net MVC - Submit buttons with same value