代码之家  ›  专栏  ›  技术社区  ›  KevDog

在ASP.net MVC中实现表单

  •  3
  • KevDog  · 技术社区  · 17 年前

    <%=Html.BeginForm("List", "Building", FormMethod.Post) %>
    
    //several fields go here
    
    <%Html.EndForm(); %>
    

    [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);
        }
    

    表单中的其余字段将用于对建筑物类型进行搜索。

    表单帖子很好,我可以按照您期望的方式搜索容量,但我可以在搜索中添加参数时闻到前方的丑陋。

    其次,较小的问题是,当页面呈现BeginForm标记时,会将字符串“System.Web.Mvc.Form”呈现给页面。我怎样才能让它消失?

    3 回复  |  直到 17 年前
        1
  •  6
  •   Craig Stuntz    17 年前

    1) 将FormCollection用作参数:

    public ActionResult List(FormCollection searchQuery)
    

    现在,您可以迭代FormCollection并从搜索表单中获取键/值搜索词。

    2) 从以下位置删除“=”:

    <% Html.BeginForm("List", "Building", FormMethod.Post) %>
    

    should really be using ,嗯。。。使用:

    <% using (Html.BeginForm("List", "Building", FormMethod.Post)) { %>
    <% } %>
    
        2
  •  0
  •   jebcrum    17 年前

    <%=Html.TextBox("building.FieldNumber1")%>
    <%=Html.TextBox("building.FieldNumber2")%>
    

    您应该能够通过以下方式访问数据:

    public ActionResult List(Building building)
    {
       ...
       var1 = building.FieldNumber1;
       var2 = building.FieldNumber2;
       ...
    }
    

    如果您的操作是根据提交的表格做两件不同的事情:

    public ActionResult List()
    {
        //some code here
    }
    
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult List(Building building)
    {
       ...
       var1 = building.FieldNumber1;
       var2 = building.FieldNumber2;
       ...
    }
    
        3
  •  0
  •   Simon_Weaver    17 年前

    如果有人对Html.BeginForm的整个“使用”模式持怀疑态度,那么请意识到IDE足够智能,可以匹配开头 '{' 结尾 '}' 这样就很容易看到表单的开始和结束。

    也<%Html.EndForm();%&燃气轮机;需要一个分号,我不确定我是否喜欢:)