У меня есть страница редактирования с 2 кнопками отправки. Теперь у меня есть третья часть, которая будет инкапсулировать оба раздела редактирования. ФормаCollection на контроллере имеет только поля "Edit1". Как передать все данные? (Если я удалю как использование операторов для Edit1, так и Edit2, я получаю все данные).
@using(Html.BeginForm("EditAll", "Account", FormMethod.Post, new { id = "EditAll" }))
{
<div>
@using(Html.BeginForm("Edit1", "Account", FormMethod.Post, new { id = "Edit1" }))
{
...
<button name="Submit" style="float: right;" class="client">Edit 1</button>
}
@using(Html.BeginForm("Edit2", "Account", FormMethod.Post, new { id = "Edit2" }))
{
...
<button name="Submit" style="float: right;" class="client">Edit 2</button>
}
</div>
<button name="Submit" style="float: right;" class="client">Edit All</button>
}
См. Эту статью о наличии нескольких кнопок отправки: http://blog.ashmind.com/2010/03/15/multiple-submit-buttons-with-asp-net-mvc-final-solution/
В основном вы будете использовать этот код:
public class HttpParamActionAttribute : ActionNameSelectorAttribute {
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo) {
if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
return true;
if (!actionName.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
return false;
var request = controllerContext.RequestContext.HttpContext.Request;
return request[methodInfo.Name] != null;
}
}
В согласовании с предоставлением атрибуту submit '' name 'name имя метода действия для вызова.