在ASPX中使用MVC3操作提交表格后,在控制器中请求
本文关键字:控制器 请求 表格 操作 ASPX MVC3 提交 | 更新日期: 2023-09-27 18:21:05
我在控制器中有以下代码:
public ActionResult SearchPage() {
return View();
}
[HttpPost]
public ActionResult Search( string option, string text ) {
// how to get request values-> and then I don't need the above parameters
ViewData["Results"] = _some.Search(option, text); //option and text should be from Request
return RedirectToAction( "SearchPage" );
}
和SearchPage代码:
<form action="<%=Url.Action("Search","Persons")%>" method="post" name="search-form">
<select name="search-option" id="search-option">
<option value="category">Category</option>
<option value="discipline">Discipline</option>
<option value="manufacturer">Manufacturer</option>
</select>
<input type="text" name="keyword" id="keyword" />
<input type="submit" name="submit" id="submit" value="Search" />
</form>
<% if ( ViewData["Results"] != null ) {
%>
<p>Test</p>
<%
}
%>
如何使用HttpRequest类获得提交的值(selectbox中的值和输入文本中的文本)?
感谢
多种方式。
使您的方法采用FormCollection参数:
public ActionResult SomeActionMethod(FormCollection formCollection)
{
var key = formCollection["key"];
或者使用默认的模型绑定器,并为您想要的每个字段设置参数:
public ActionResult SomeActionMethod(string name)
或
public ActionResult SomeActionMethod(Person person)
在你看来
<input name="Person.name" />
或者创建自己的模型活页夹。
如果你想访问请求,但如果你想走那条路,请使用FormCollection。
首先,您应该有类似的东西
`<select name="searchOption" id="searchOption">`
和
`public ActionResult Search( string searchOption, string keyword) {`
您不能在视图的参数中使用字符"-",因为您无法在自动映射的操作参数中转换该字符。
也就是说,如果你不想使用这个动作参数,你可以使用类似的东西:
`Request.Params["search-option"]`
使用asp.net-mvc,您不需要手动从HttpRequest
中提取值。框架会自动执行此操作,并称之为模型绑定。在int、字符串和其他简单类型参数的情况下,只需在操作方法上使用与其参数同名的name
.html输入即可。嵌套属性和列表的命名略有不同。
<select name="option" id="option">
<option value="category">Category</option>
<option value="discipline">Discipline</option>
<option value="manufacturer">Manufacturer</option>
</select>
<input type="text" name="text" id="keyword" />
现在,在实际操作中,选项和文本将具有值。