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

Muh*_*raz 39 asp.net asp.net-mvc asp.net-mvc-5

我正在研究MVC 5 Asp.Net并遵循教程.我想知道当我点击过滤按钮时如何获取结果?

在Movie/view/Index.cshtml中添加了此代码

@using (Html.BeginForm())
{    
     <p> Title: @Html.TextBox("SearchString") <br />   
     <input type="submit" value="Filter" /></p> 
} 
Run Code Online (Sandbox Code Playgroud)

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

Dej*_*n.S 58

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

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

}
Run Code Online (Sandbox Code Playgroud)

所以,你post action应该接受你的表单包含的参数,并且可以是ModelProduct,ViewModel或者单个字符串参数.在您搜索的情况下,您的操作应如下所示

[HttpPost]
public ActionResult Search(string SearchString) 
{
   //do something here
}
Run Code Online (Sandbox Code Playgroud)

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

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

希望这能带来清晰.

  • @using语句有什么区别? (2认同)