ASP.NET MVC - Как получить текущее действие из частичного представления? - PullRequest
6 голосов
/ 18 сентября 2009

У меня есть частичное представление, отображаемое несколькими представлениями, которые возвращаются несколькими методами действия.

Частичное представление имеет форму, которая должна отправляться обратно в вызываемый метод действия.

Насколько я понимаю, если я просто позвоню

<% Html.BeginForm(); %>

в представлении атрибут действия формы будет указывать на вызываемый метод действия. Я не могу этого сделать, потому что мне нужно установить атрибут идентификатора формы для целей JavaScript. Перегрузка Html.BeginForm, которая позволяет мне устанавливать атрибуты html, также требует явного контроллера и действия. Таким образом, вместо использования помощника Html, я мог бы просто написать элемент формы как:

<form action="<%=(NEED TO SOMEHOW GET THE URL TO THE CURRENT ACTION) %>" method="post" id="myForm">

Я просто не знаю, как получить URL.

Ответы [ 3 ]

15 голосов
/ 18 сентября 2009

Просто передайте ноль для контроллера и действия. Правильные значения будут подставлены. E.g.:

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "employeeGroupForm" }))
2 голосов
/ 18 сентября 2009

ViewContext.RouteData.Values ​​[ "действие"]

Или что-то подобное выполняет свою работу

0 голосов
/ 18 сентября 2009

В этой ситуации мне, вероятно, просто нужно, чтобы контроллер (или родительское представление) поместил соответствующий целевой URL в вашу модель / ViewData.

Что касается того, КАК внутри вашего контроллера:

public ActionResult MyAction() {
    MyModel m = new MyModel();

    ...

    m.MyControlAction = "MyAction";
    m.MyControlController = "MyController";

    return View("MyView", m);
}

Тогда по вашему мнению:

Html.RenderPartial("MyControl", ViewData.Model);

И в вашем частичном представлении:

Html.BeginForm(ViewData.Model.MyControlController, ViewData.Model.MyControlAction, ...)

Для более чистого дизайна вы, вероятно, захотите, чтобы члены MyControlController и MyControlAction имели интерфейс, который должна реализовывать каждая Модель, использующая этот элемент управления. Затем сделайте частичное представление для строго типизированной модели с этим типом интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...