@ Html.BeginForm()如何工作?并在Microsoft ASP.Net MVC 5教程中搜索结果?

时间:2014-10-26 14:55:20

标签: asp.net asp.net-mvc asp.net-mvc-5

我正在研究MVC 5 Asp.Net并关注this教程。我想知道当我点击过滤按钮时,这是如何获取结果的?

在Movie / view / Index.cshtml

中添加了此代码
@using (Html.BeginForm())
{    
     <p> Title: @Html.TextBox("SearchString") <br />   
     <input type="submit" value="Filter" /></p> 
} 

据我所知,它在屏幕上创建了一个文本框和一个按钮。但是这个按钮如何调用搜索(索引)函数并在函数中传递textbox的值,我无法得到它。

1 个答案:

答案 0 :(得分:54)

这不是一个愚蠢的问题。 @html.BeginForm()就是这样的。它可以添加一些参数,例如Action Controller FormType htmlAttributes。它的工作方式是,如果你把它留空,它将寻找一个与你现在的页面同名的帖子动作,例如,如果你在登录页面上,它将寻找登录后的动作。我总是写出我希望它访问的actioncontroller

@html.BeginForm("AddUser", "Admin", FormMethod.Post, new { @class = "my_form"})

因此,您的post action应接受表单中包含的参数,并且可以是Model,即ProductViewModel或单个字符串参数。对于您的搜索,您的操作应该是

[HttpPost]
public ActionResult Search(string SearchString) 
{
   //do something here
}

此处请注意,要将搜索字符串传递给方法。 <input>的名称必须与您的操作所采用的参数相同。所以我们的表格应该是这样的

@using (Html.BeginForm("Search", "YOUR CONTROLLER", FormMethod.Post)){    
     <p> Title: @Html.TextBox("SearchString") <br />   
     <input type="submit" value="Filter" /></p> 
} 

希望这能带来清晰。