如何使用asp.net mvc将我的dropdownlist框值输入控制器

时间:2010-08-20 12:23:12

标签: asp.net asp.net-mvc asp.net-mvc-2

嗨,我的观点中有这段代码..

<%=Html.DropDownList("ProductTemplate",new SelectList(Model.ProductTemplate,"Value","Text"))%>

我知道如果此下拉列表框位于BeginForm提交之间,我可以使用collection["ProductTemplate"];

访问Controller中的值

如果它不在我的beginForm中,我还能在控制器中访问这个选定的值吗?

感谢

2 个答案:

答案 0 :(得分:3)

您可以使用AJAX将当前所选元素的值发送到控制器操作。这对jQuery来说非常简单:

$.post('/home/foo', { productTemplate: $('#ProductTemplate').val() }, function(data) {
    alert(data.success);
});

要访问控制器操作中的选定值,只需使用参数:

[HttpPost]
public ActionResult Foo(string productTemplate)
{
    // TODO: do something with the selected productTemplate
    return Json(new { success = true });
}

答案 1 :(得分:1)

如果控件不在表单标签内,则不会在控制器中获取其值。解决方法可能是。

1)在表单

中创建一个隐藏字段

2)下拉列表的OnChange事件将所选值分配给隐藏字段

修改

<%=Html.DropDownList("ProductTemplate",new SelectList(Model.ProductTemplate,"Value","Text"),new {@onchange="setVal()"})%>
.
.
<form>
.
.
<input type="hidden" id="myval" name="myval"/>
.
.
</form>
<script type="text/javascript">
function setVal()
{
$("#myval").val($("#ProductTemplate").val());
}
</script>

现在在您的控制器中,您可以获得collection["myval"]

的值