ASP.NET MVC:使用Ajax.BeginForm的多个提交按钮

时间:2013-08-17 03:56:34

标签: asp.net-mvc asp.net-mvc-4

我想创建一个页面,其中包含下一个按钮和上一个按钮,用于切换显示的图像。

为此,我创建了一个Ajax.BeginForm并插入其中,一个图像和两个提交按钮。

我(我应该)在Ajax.BeginForm内有多个提交按钮吗?

控制器如何分别处理每个提交?

3 个答案:

答案 0 :(得分:24)

试试这个,

查看

@model TwoModelInSinglePageModel.RegisterModel
@using (Ajax.BeginForm("DYmanicControllerPage", "Test", FormMethod.Post,null, new { id = "frmSignUp" }))
{ 
  <div>
                <input type="hidden" id="" name="hidden2" id="hdasd" />
                @Html.HiddenFor(m => m.hidden1)
                @Html.LabelFor(m => m.Name)
                @Html.TextBoxFor(m => m.Name)
                @Html.ValidationMessageFor(m => m.Name)
            </div>
            <br />
            <div>
                @Html.LabelFor(m => m.Address)
                @Html.TextBoxFor(m => m.Address)
                @Html.ValidationMessageFor(m => m.Address)
            </div>
            <br />
            <div>
                @Html.LabelFor(m => m.PhoneNo)
                @Html.TextBoxFor(m => m.PhoneNo)
                @Html.ValidationMessageFor(m => m.PhoneNo)
            </div>

 <input type="submit" value="Save"  id="btnSave" name="ButtonType"/>
 <input type="submit" value="Next"  id="btnNext" name="ButtonType" />


}

<强>控制器

  [HttpPost]
        public ActionResult DYmanicControllerPage(RegisterModel model,  string ButtonType)
        {
        if(ButtonType == "Next")
        {
            // Do Next Here
        }
        if (ButtonType == "Save")
        {
            //Do save here
        }
        return JavaScript("REturn anything()");

        }

答案 1 :(得分:7)

我建议您有两个按钮,然后根据点击的按钮,您可以在表单上设置操作:

<强>剃刀

$(function (){
    $("#btn-prev").click(function() {
        $("#form").attr
                   (
                      "action",
                      "@Url.Action("Action", "Controller", new {area="Area" })", 
                   ).submit();
    });
    $("#btn-next").click(function() {
        $("#form").attr
                   (
                      "action",
                      "@Url.Action("Action", "Controller", new {area="Area" })", 
                   ).submit();
    });
});

我在这里使用jQuery来做这件事,但我认为你可以理解。

答案 2 :(得分:1)

我有同样的要求/问题,并在这里尝试了两种解决方案,它们都适合我。我喜欢在点击时通过jquery设置动作的想法,所以我可以将我的动作分开,以便其他视图可以使用它们。

但是,我发现当我在调试时执行此操作时,它会发布TWICE并且 BOTH 会触发OnSuccess和OnFailure。它只会在调试时发生。选择时请记住这一点。