Настройка способа получения формы без указания контроллера и действия - PullRequest
1 голос
/ 12 июля 2011

У меня есть частичное представление, которое мне нужно повторно использовать:

div class="selectDate">
@using (Html.BeginForm("ViewTransactionLog", "Profile", FormMethod.Get))
{
    <div class="selectDateLabel">Date:</div>
    <div>
    @Html.TextBox("start", range.Start, new { @class = "pickDate" }) to @Html.TextBox("end", range.End, new { @class = "pickDate" })

    </div>
    <div>
    <input type="submit" value="Go" />
    </div>
}
</div>

Это код для выбора 2 дат.Поскольку данные невелики, я хочу передать их через метод Get.Я также хотел бы обобщить это и поместить его в свой собственный cshtml;однако Html.BeginForm ожидает, что имя контроллера и имя действия будут заданы, если я хочу использовать метод Get.Есть ли способ избежать этого, чтобы я мог просто переместить код в его частичное представление?

1 Ответ

4 голосов
/ 12 июля 2011

Предполагая, что вы хотите отправить форму обратно на текущий контроллер и выполнить действие, вы должны иметь возможность использовать метод расширения:

public static MvcForm BeginForm<TModel>(
    this HtmlHelper<TModel> html, 
    FormMethod formMethod)
{
    string controller = (string)html.ViewContext.RouteData.Values["controller"];
    string action = (string)html.ViewContext.RouteData.Values["action"];

    return html.BeginForm(action, controller, formMethod);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...