我无法理解以下两个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,而第二个表单则不。
有人可以解释差异和/或应该如何使用这些差异吗?
答案 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>