嗨,我的观点中有这段代码..
<%=Html.DropDownList("ProductTemplate",new SelectList(Model.ProductTemplate,"Value","Text"))%>
我知道如果此下拉列表框位于BeginForm提交之间,我可以使用collection["ProductTemplate"];
如果它不在我的beginForm中,我还能在控制器中访问这个选定的值吗?
感谢
答案 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"]