ASP.Net MVC Сильно типизированные формы - PullRequest
0 голосов
/ 08 июля 2011

У меня возникают проблемы с пониманием разницы между следующими двумя параметрами синтаксиса Html.BeginForm:

@using (Html.BeginForm("SubmitSiteSearch", "Home"))
{
    @Html.LabelFor(x => x.SearchText, "Quick Search:");
    @Html.TextBoxFor(x => x.SearchText);
    @Html.SubmitButton("btn-quick-home-search", "Search");
}

@using (Html.BeginForm<HomeController>(x => x.SubmitSiteSearch(Model), FormMethod.Post))
{
    @Html.LabelFor(x => x.SearchText, "Quick Search:");
    @Html.TextBoxFor(x => x.SearchText, new { id = "quick-home-search" });
    @Html.SubmitButton("btn-quick-home-search", "Search");
}

[HttpPost]
public ActionResult SubmitSiteSearch(HomeViewModel model)
{
    string _siteSearchText = model.SearchText;
    return View(model);
}

Первая форма создает экземпляр HomeViewModel и задает SearchText со значением текстового поля, а вторая формане.

Может кто-нибудь объяснить разницу и / или как их следует использовать?

1 Ответ

1 голос
/ 08 июля 2011

Разница в том, что второй не является частью ASP.NET MVC. Возможно, вы используете какую-то стороннюю библиотеку, например, сборку MVC Futures. Предполагая, что вы используете маршруты по умолчанию, оба помощника должны генерировать одинаковую разметку:

<form action="/Home/SubmitSiteSearch" method="post">
    <label for="SearchText">Quick Search:</label>
    <input id="SearchText" name="SearchText" type="text" value="" />
    <input id="btn-quick-home-search" name="btn-quick-home-search" type="submit" value="Search" />
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...