ASP.Net MVC 4表格2提交按钮/动作(ASP.Net MVC 4 Form with 2

2019-09-02 11:11发布

我在ASP.Net和剃须刀的形式。

我需要提交该表格的两种方式:一种是通过去Edit动作,另一个通过云Validate的行动。

我应该如何去这样做呢?

我不介意使用JavaScript这一点。

编辑:

使用自定义属性我得到这个错误。

为动作“Resultados”上控制器类型“InspecoesController”当前请求是以下动作的方法之间暧昧:System.Web.Mvc.ActionResult Validar(了System.Collections.Generic.ICollection 1[Waveform.IEP.Intus.Server.Web.ViewModels.ResultadoViewModel]) on type Waveform.IEP.Intus.Server.Web.Controllers.InspecoesController System.Web.Mvc.ActionResult Resultados(System.Collections.Generic.ICollection 1 [Waveform.IEP.Intus.Server.Web.ViewModels。上型Waveform.IEP.Intus.Server.Web.Controllers.InspecoesController ResultadoViewModel])

Answer 1:

这就是我们在我们的应用程序:
属性

public class HttpParamActionAttribute : ActionNameSelectorAttribute
{
    public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
    {
        if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
            return true;

        var request = controllerContext.RequestContext.HttpContext.Request;
        return request[methodInfo.Name] != null;
    }
}

操作饰吧:


[HttpParamAction]
public ActionResult Save(MyModel model)
{
    // ...
}

[HttpParamAction]
public ActionResult Publish(MyModel model)
{
    // ...
}

HTML /剃刀

@using (@Html.BeginForm())
{
    <!-- form content here -->
    <input type="submit" name="Save" value="Save" />
    <input type="submit" name="Publish" value="Publish" />
}

name提交按钮的属性应该匹配动作/方法名

这样,您就不必硬编码的URL在JavaScript



Answer 2:

你可以使用jQuery做,只是把两种方法用于提交指出错误的网址,例如用这种形式:

<form id="myForm">
    <%-- form data inputs here ---%>
    <button id="edit">Edit</button>
    <button id="validate">Validate</button>
</form>

你可以使用这个脚本(确保它位于视图,以使用Url.Action属性):

<script type="text/javascript">
      $("#edit").click(function() {
          var form = $("form#myForm");
          form.attr("action", "@Url.Action("Edit","MyController")");
          form.submit();
      });

      $("#validate").click(function() {
          var form = $("form#myForm");
          form.attr("action", "@Url.Action("Validate","MyController")");
          form.submit();
      });
</script>


Answer 3:

如果您在asp.net正与剃刀,并且要控制多个提交按钮event.then这个答案会引导你。 让我们举例来说,我们有两个按钮,一个按钮将重定向我们“PageA.cshtml”等将重定向我们“PageB.cshtml”。

@{
  if (IsPost)
    {
       if(Request["btn"].Equals("button_A"))
        {
          Response.Redirect("PageA.cshtml");
        }
      if(Request["btn"].Equals("button_B"))
        {
          Response.Redirect("PageB.cshtml");
        }
  }
}
<form method="post">
   <input type="submit" value="button_A" name="btn"/>;
   <input type="submit" value="button_B" name="btn"/>;          
</form>



Answer 4:

这里是一个很好eplanation: ASP.NET MVC -在同一形式的多个按钮

在2个字:
你可以在analize YOUT行动提交按钮的值
要么
让你的版本单独行动ActionMethodSelectorAttribute (我本人来说更喜欢和建议)。



Answer 5:

 <input type="submit" value="Create" name="button"/> <input type="submit" value="Reset" name="button" /> 

写的Controler下面的代码。

[HttpPost]
        public ActionResult Login(string button)
        {
            switch (button)
            {
                case "Create":
                    return RedirectToAction("Deshboard", "Home");
                    break;
                case "Reset":
                    return RedirectToAction("Login", "Home");
                    break;
            }

            return View();
        }


Answer 6:

随着HTML5可以使用button[formaction]

<form action="Edit">
  <button type="submit">Submit</button> <!-- Will post to default action "Edit" -->
  <button type="submit" formaction="Validate">Validate</button> <!-- Will override default action and post to "Validate -->
</form>


Answer 7:

我们可以通过两种方式都这样了,

要么在控制器在同一视图内2个表单提交,并具有2点动作的方法,但你需要有必要的领域与形式提交给被放置在

当然在这里给出的代码鉴于asp.net的MVC多种形式与多个提交按钮

要么

有2个或多个提交按钮说btnSubmit1和btnSubmit2并检查使用的代码哪个按钮被点击的操作方法

if (Request.Form["btnSubmit1"] != null)
{
 //
}
if (Request.Form["btnSubmit2"] != null)
{
 //
}


文章来源: ASP.Net MVC 4 Form with 2 submit buttons/actions
标签: asp.net razor