[英]Failing to pass data from view to controller after submitting a form in MVC
[英]Request in Controller after submitting a form in ASPX using MVC3 action
我在控制器中有以下代码:
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
提取值。 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" />
现在,在操作中,选项和文本将具有值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.