У меня есть представление, более или менее точно такое же для 3 разных контроллеров. Единственное различие заключается в том, где они публикуют форму. Все эти контроллеры происходят из одного и того же базового класса, и представление содержит форму, которая будет отправлять одно из действий этого базового класса.Pass FormAction в модели с MVC Futures
мой взгляд в настоящее время выглядит следующим образом:
@model Models.Forms.ContactPersonForm
@{
Layout = null;
}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Edit contact person</h4>
</div>
@using (Html.BeginForm<ProductsController>(x => x.EditContactPerson(null), FormMethod.Post))
{
<div class="modal-body">
@Html.EditorForModel()
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
<span class="fa fa-times" area-hidden="true"></span> Close
</button>
<button type="submit" class="btn btn-primary">
<span class="fa fa-floppy-o" area-hidden="true"></span> Save
</button>
</div>
}
Вид сверху работает отлично. Но я хочу повторно использовать его для другого контроллера, который также наследует тот же базовый контроллер (и сообщения в действие EditContactPerson
). Поэтому я хочу указать в модели, для которой контроллер должен отправлять сообщения. Я знаю, что могу использовать string overload как таковой:
@Html.BeginForm("EditContactPerson", "Products", FormMethod.Post)
или
@Html.BeginForm(Model.Action, Model.Controller, FormMethod.Post)
, но я действительно хочу использовать Expression вместо этого, например, так:
@Html.BeginForm<ProductsController>(x => x.EditContactPerson(null), FormMethod.Post)
Есть ли способ Я могу использовать модель для рендеринга формы с помощью выражения из модели?
Что-то похож на:
@Html.BeginForm<Model.ControllerType>(Model.ActionExpression, FormMethod.Post)
Я хотел бы использовать простой HTML
@ Давид, да, ты совершенно прав. Дело в том, что я пытаюсь полностью набрать все маршруты. – smoksnes
Не могли бы вы использовать шаблон DI и создать интерфейс, такой как IController, о, кстати ... Total Guess –