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