2016-08-29 3 views
0

Пытается сделать несколько форм отправки, но с ошибкой The current request for action 'EditAccount' on controller type 'AccountController is ambiguous between the following action methods. Как я могу это исправить? Вот кодmultiple submit form в html beginform mvc

Атрибут:

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>&nbsp;Add New</button> 

} 
+1

Я предполагаю, вы не понимая, что ваши параметры метода или что ваши кнопки делают (и они нуждаются в 'value' атрибуты для того, чтобы оставить значение) , Предложите вам посмотреть [этот вопрос/ответ] (http://stackoverflow.com/questions/30970159/net-mvc4-actionnameselectorattribute-multiple-buttons-within-view-is-not-workin) –

+1

Я думаю, эта статья будет иметь ответ на ваш вопрос: http://stackoverflow.com/questions/442704/how-do-you-handle-multiple-submit-buttons-in-asp-net-mvc-framework – Monah

ответ

2

Попробуйте это, он будет работать. Основание на 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>&nbsp;Add New</button> 

} 

.cs

[HttpPost] 
[HttpParamAction] 
public virtual async Task<ActionResult> ActionName(AccountModel model, string Account) 
{ 
    if(Account=="Edit"){ 
    ... 
    } 
    else if(Account=="AddNew"){ 
    .... 
    } 
}