在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中的值和输入文本中的文本)?

感谢

在ASPX中使用MVC3操作提交表格后,在控制器中请求

多种方式。

使您的方法采用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" />

现在,在实际操作中,选项和文本将具有值。