ASP.Net MVC强类型表单

时间:2011-07-08 18:52:18

标签: asp.net-mvc-3

我无法理解以下两个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 个答案:

答案 0 :(得分:1)

不同之处在于第二个不是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>