我在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])
这就是我们在我们的应用程序:
属性
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
你可以使用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>
如果您在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>
这里是一个很好eplanation: ASP.NET MVC -在同一形式的多个按钮
在2个字:
你可以在analize YOUT行动提交按钮的值
要么
让你的版本单独行动ActionMethodSelectorAttribute
(我本人来说更喜欢和建议)。
<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();
}
随着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>
我们可以通过两种方式都这样了,
要么在控制器在同一视图内2个表单提交,并具有2点动作的方法,但你需要有必要的领域与形式提交给被放置在
当然在这里给出的代码鉴于asp.net的MVC多种形式与多个提交按钮
要么
有2个或多个提交按钮说btnSubmit1和btnSubmit2并检查使用的代码哪个按钮被点击的操作方法
if (Request.Form["btnSubmit1"] != null)
{
//
}
if (Request.Form["btnSubmit2"] != null)
{
//
}