MVC noob问题:如何从控制器中的视图中获取文本框或下拉列表中的值?

时间:2011-01-13 16:28:04

标签: asp.net-mvc

可能足够长,以至于我无法将其传递给查询字符串。是否可以提交整个表格?如果是这样,我将如何在控制器中检索表单的值?

3 个答案:

答案 0 :(得分:2)

为了澄清mpminnich的回复,您可以接受FormCollection作为操作参数:

public ActionResult Add(FormCollectiom form) {
    var foo = form["fieldName"];
    ...
}

答案 1 :(得分:1)

FormCollection将包含视图表单上的所有值。您可以按索引或控件名称搜索集合。

答案 2 :(得分:0)

是的,您可以在表单上使用method="POST",这样所有值都将沿POST主体发送,而不是在查询字符串中发送。例如:

<% using (Html.BeginForm()) { %>
    ... some input fields
<% } %>

在控制器操作中,您可以使用强类型视图模型来获取这些值,这要归功于默认的模型绑定器(推荐):

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    ...
}

或从请求中获取它们:

[HttpPost]
public ActionResult Index()
{
    var param1 = Request["param1"];
    var param2 = Request["param2"];
    ...
}