在mvc3中的Get Call上将数据从视图传递到控制器

时间:2012-10-26 07:14:01

标签: asp.net asp.net-mvc asp.net-mvc-3 razor

我有下拉列表,用于在视图中显示页面大小。

的例子
@Html.DropDownListFor(m => m.PageSize,
new List<SelectListItem>() { new SelectListItem() { Text = "10" }, 
new SelectListItem() { Text = "20" },
new SelectListItem() { Text = "50" },
new SelectListItem() { Text = "100" }
})

我必须在控制器操作中获取所选项目值。

我的行动只接受来电。我只是不想传递查询字符串。那么如何实现呢?

3 个答案:

答案 0 :(得分:2)

如果你想使用GET传递它,恐怕你唯一的选择是查询字符串。

引用w3.org spec

的引用

“GET方法意味着检索由Request-URI标识的任何信息(以实体的形式)。”

答案 1 :(得分:1)

我的想法是准备更加动态并将数据发送到模型。

<td>
@Html.DropDownListFor(m => m.CurrentVoucher, new System.Web.Mvc.SelectList(Model.OutgoingStatusList, "Value", "Text"), new { style = "width:140px" })
</td>

------------
model.OutgoingStatusList = new List<SelectListItem>();
------------
model.KidsList = new List<SelectListItem>();
            for (int i = 0; i <= 20; i++)
                model.KidsList.Add(new SelectListItem { Value = i.ToString(), Text = i.ToString() });

模型将获得值“m.CurrentVoucher”。只有示例(我从我的笔记中取出)和“model.kidsList”,您可以更改为“model.OutgoingStatus”,您可以更改名称。阅读这个例子我希望我帮助过。

答案 2 :(得分:1)

如果你厌恶使用查询字符串是手动构建url,然后将其包装在一个方法=“get”的表单中,这样你仍然可以使用像下拉列表这样的控件,但它们会自动转换为查询字符串提交表格。