我正在研究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的值,我无法得到它。
答案 0 :(得分:54)
这不是一个愚蠢的问题。 @html.BeginForm()
就是这样的。它可以添加一些参数,例如Action
Controller
FormType
htmlAttributes
。它的工作方式是,如果你把它留空,它将寻找一个与你现在的页面同名的帖子动作,例如,如果你在登录页面上,它将寻找登录后的动作。我总是写出我希望它访问的action
和controller
。
@html.BeginForm("AddUser", "Admin", FormMethod.Post, new { @class = "my_form"})
因此,您的post action
应接受表单中包含的参数,并且可以是Model
,即Product
,ViewModel
或单个字符串参数。对于您的搜索,您的操作应该是
[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>
}
希望这能带来清晰。