Kev*_*Dog 3 .net c# forms asp.net-mvc views
我在视图页面上有一个简单的表单,实现为用户控件,看起来像这样:
<%=Html.BeginForm("List", "Building", FormMethod.Post) %>
//several fields go here
<%Html.EndForm(); %>
Run Code Online (Sandbox Code Playgroud)
我想解决两个问题,第一个是我希望接收它的控制器方法获取用户控件的类型参数.目标是避免将表单的所有字段放入方法的参数列表中.控制器方法目前看起来像这样:
[AcceptVerbs("Post")]
public ActionResult List(string capacityAmount)
{
ProfilerDataDataContext context = new ProfilerDataDataContext();
IEnumerable<Building> result = context.Buildings.OrderBy(p => p.SchoolName);
ViewData["Boroughs"] = new SelectList(Boroughs.BoroughsDropDown());
return View(result);
}
Run Code Online (Sandbox Code Playgroud)
表单中的其余字段将用于对建筑物类型进行搜索.
表单发布很好,我可以按照你期望的方式搜索容量,但是当我在搜索中添加参数时,我可以闻到丑陋.
其次,较小的问题是当页面呈现时,BeginForm标记将字符串"System.Web.Mvc.Form"呈现给页面.我如何让它消失?
1)使用FormCollection作为参数:
public ActionResult List(FormCollection searchQuery)
Run Code Online (Sandbox Code Playgroud)
现在,您可以迭代FormCollection并从搜索表单中获取键/值搜索词.
2)从BeginForm中删除"=":
<% Html.BeginForm("List", "Building", FormMethod.Post) %>
Run Code Online (Sandbox Code Playgroud)
那就是说,你真的应该使用,嗯......使用:
<% using (Html.BeginForm("List", "Building", FormMethod.Post)) { %>
<% } %>
Run Code Online (Sandbox Code Playgroud)