MVC剃须刀形式有多个不同的提交按钮?

Tou*_*ubi 58 c# asp.net-mvc razor asp.net-mvc-4

Razor视图在表单中有3个按钮.所有按钮的操作都需要表单值,这些值基本上是输入字段的值.

每次我点击任何按钮时,它都会将我重定向到默认操作.您能否指导我如何根据按钮提交表单到不同的操作?

我非常感谢您的时间,指导和帮助.

Jer*_*erg 87

你也可以试试这个:

<input type="submit" name="submitbutton1" value="submit1" />
<input type="submit" name="submitbutton2" value="submit2" />
Run Code Online (Sandbox Code Playgroud)

然后在默认函数中调用所需的函数:

if( Request.Form["submitbutton1"] != null)
{
    // Code for function 1
}
else if(Request.Form["submitButton2"] != null )
{
    // code for function 2
}
Run Code Online (Sandbox Code Playgroud)

  • 问题不在于标签.但是,在此示例中,按钮将标记为submit1和submit2 (2认同)
  • @BerggreenDK:如果需要不同的标签,可以使用<button>代替<input>. (2认同)

lea*_*ner 73

这个优雅的解决方案适用于多个提交按钮:

@Html.Begin()
{
  // Html code here
  <input type="submit" name="command" value="submit1" />
  <input type="submit" name="command" value="submit2" />

}
Run Code Online (Sandbox Code Playgroud)

在控制器的操作方法中,将其作为参数接受.

public ActionResult Create(Employee model, string command)
{
    if(command.Equals("submit1"))
    {
      // Call action here...
    }
    else
    {
      // Call another action here...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了!希望我能给你这么多赞成! (4认同)

Lam*_*fif 16

在视图中

<form action="/Controller_name/action" method="Post>

 <input type="submit" name="btn1" value="Ok" />
 <input type="submit" name="btn1" value="cancel" />
 <input type="submit" name="btn1" value="Save" />
</form>
Run Code Online (Sandbox Code Playgroud)

在行动中

string str =Request.Params["btn1"];
if(str=="ok"){


}
if(str=="cancel"){


}
if(str=="save"){


}
Run Code Online (Sandbox Code Playgroud)


Art*_*hur 10

您可以使用JS + Ajax.例如,如果您有任何按钮,您可以说它在点击事件上必须执行的操作.这里的代码:

 <input id="btnFilterData" type="button" value="myBtn">
Run Code Online (Sandbox Code Playgroud)

这里你的按钮在html中:在脚本部分,你需要使用这个代码(这部分应该在文档的末尾):

<script type="text/javascript">
$('#btnFilterData').click(function () {
    myFunc();
});
</script>
Run Code Online (Sandbox Code Playgroud)

最后,您需要添加ajax函数(在另一个脚本部分,应该放在文档的开头):

function myFunc() {
    $.ajax({
        type: "GET",
        contentType: "application/json",
        url: "/myController/myFuncOnController",
        data: {
             //params, which you can pass to yu func
        },
        success: function(result) {

        error: function (errorData) {

        }
    });
};
Run Code Online (Sandbox Code Playgroud)


use*_*433 5

这对我有用。

formaction="@Url.Action("Edit")"
Run Code Online (Sandbox Code Playgroud)

片段:

 <input type="submit" formaction="@Url.Action("Edit")" formmethod="post" value="Save" class="btn btn-primary" />

<input type="submit" formaction="@Url.Action("PartialEdit")" formmethod="post" value="Select Type" class="btn btn-primary" />

 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit( Quote quote)
        {
           //code 
       }
 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult PartialEdit(Quote quote)
        {
           //code
        }
Run Code Online (Sandbox Code Playgroud)

可能会帮助那些想要使用两种不同的操作方法而不是使用选择器或使用客户端脚本的一种方法的人。