在使用MVC3操作在ASPX中提交表单后请求Controller

时间:2012-01-20 07:23:38

标签: c# asp.net-mvc

我在控制器中有以下代码:

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

由于

3 个答案:

答案 0 :(得分:2)

很多方式。

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

答案 1 :(得分:1)

首先,你应该有像

这样的东西
`<select name="searchOption" id="searchOption">`

`public ActionResult Search( string searchOption, string keyword) {`

您不能在视图的参数中使用字符“ - ”,因为您无法在自动映射的参数中将其转换为您的操作。

话虽这么说,如果你不想为这个使用动作参数,你可以使用类似的东西:

`Request.Params["search-option"]`

答案 2 :(得分:1)

使用asp.net-mvc,您无需从HttpRequest手动提取值。 Framework自动执行此操作,并将其称为模型绑定。对于整数,字符串和其他简单类型参数,只需要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" />

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