html beginform mvc 中的多个提交表单
multiple submit form in html beginform mvc
尝试制作多个提交表单,但出现错误 The current request for action 'EditAccount' on controller type 'AccountController is ambiguous between the following action methods
。我怎样才能解决这个问题?这是代码
属性:
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;
}
}
来自控制器的方法:
[HttpPost]
[HttpParamAction]
public virtual async Task<ActionResult> AddNew(AccountModel model)
{ ... }
[HttpPost]
[HttpParamAction]
public virtual async Task<ActionResult> EditAccount(AccountModel model)
{ ... }
并查看
@using (Html.BeginForm(new {@class = "form-horizontal"}))
{
<button type="submit" class="btn btn-w-m btn-primary" name="EditAccount">Save</button>
<button type="submit" class="btn btn-w-m btn-primary" name="AddNew" ><i class="fa fa-plus"></i> Add New</button>
}
试试这个,它会起作用。基于 name
和 value
调用函数。
.cshtml
@using (Html.BeginForm("ActionName",new {@class = "form-horizontal"}))
{
<button type="submit" class="btn btn-w-m btn-primary" name="Account" value="Edit">Save</button>
<button type="submit" class="btn btn-w-m btn-primary" name="Account" value="AddNew" ><i class="fa fa-plus" ></i> Add New</button>
}
.cs
[HttpPost]
[HttpParamAction]
public virtual async Task<ActionResult> ActionName(AccountModel model, string Account)
{
if(Account=="Edit"){
...
}
else if(Account=="AddNew"){
....
}
}
尝试制作多个提交表单,但出现错误 The current request for action 'EditAccount' on controller type 'AccountController is ambiguous between the following action methods
。我怎样才能解决这个问题?这是代码
属性:
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;
}
}
来自控制器的方法:
[HttpPost]
[HttpParamAction]
public virtual async Task<ActionResult> AddNew(AccountModel model)
{ ... }
[HttpPost]
[HttpParamAction]
public virtual async Task<ActionResult> EditAccount(AccountModel model)
{ ... }
并查看
@using (Html.BeginForm(new {@class = "form-horizontal"}))
{
<button type="submit" class="btn btn-w-m btn-primary" name="EditAccount">Save</button>
<button type="submit" class="btn btn-w-m btn-primary" name="AddNew" ><i class="fa fa-plus"></i> Add New</button>
}
试试这个,它会起作用。基于 name
和 value
调用函数。
.cshtml
@using (Html.BeginForm("ActionName",new {@class = "form-horizontal"}))
{
<button type="submit" class="btn btn-w-m btn-primary" name="Account" value="Edit">Save</button>
<button type="submit" class="btn btn-w-m btn-primary" name="Account" value="AddNew" ><i class="fa fa-plus" ></i> Add New</button>
}
.cs
[HttpPost]
[HttpParamAction]
public virtual async Task<ActionResult> ActionName(AccountModel model, string Account)
{
if(Account=="Edit"){
...
}
else if(Account=="AddNew"){
....
}
}