具有多个参数的MVC Form Post

时间:2011-04-22 14:10:15

标签: c# asp.net-mvc asp.net-mvc-3 model

所以我有一个这样的动作方法:

public ViewResult CareerSearch()
{
    CareerSearchModel model = GetCareerSearchModel();

    return View("Search", model);
}

在视图中,我手动创建一个模型属性的复选框列表。输出最终看起来像这样:

<input id="location51438342" type="checkbox" checked="True" value="2" name="locations">
<label for="location51438342">Austin</label>
<input id="location14609737" type="checkbox" checked="True" value="9" name="locations">
<label for="location14609737">Dallas</label>
<input id="location25198218" type="checkbox" checked="True" value="11" name="locations">
<label for="location25198218">Houston</label>

因此,在处理表单POST的action方法中,我想获得对模型和复选框整数数组的引用。但是,当我单步执行以下操作方法时,“model”为null:

[HttpPost]
public ViewResult CareerSearch(CareerSearchModel model, int[] locations)
{
    //omitted for brevity
}

我在这里缺少什么?如何获取对模型和复选框值数组的引用?

2 个答案:

答案 0 :(得分:0)

你必须回复模型本身的所有字段,也就是将它们隐藏在表单内的标签中。你可以使用firebug来查看回发的内容。如果它没有被回发,你必须在帖子后的动作中重新创建它。

答案 1 :(得分:0)

模型不会保存在服务器上的任何位置,也不会自动回发到POST数据中(使用Fiddler进行确认)。您必须以与GET操作相同的方式实例化模型,并使用其他参数进行相应的修改。

有关如何将POST表单数据映射到模型中的信息,请参阅NerdDinner