2011-12-19 89 views
2

我有下面的代码如何在形式不提交尚未

@using (Html.BeginForm()) 
{ 

    @Html.DropDownListFor(m => m.IDs, new SelectList(Model. IDs), Model.SelectedID) 
}  

从这个组合绑定因此用户选择的模式SelectedID属性来检索下拉选择的价值。我的理解是,这种绑定只有在提交表单时才会发生。假设从同一页面,我需要做一个AJAX调用,但在这一点上)Model.SelectedID不提供任何价值,因为表单还没有提交(尽管用户已经从下拉菜单中选择了一些东西)。任何想法如何最好地处理这种情况?

回答

2

您可以使用JavaScript。

var selectedValue = $("#IDs").val(); 
1

绑定change事件到您的DD

$("#DDL_ID").change(function(){ 

var currVal = $(this).val(); 

//do ajax 

}); 
1

正如其他人指出,你会得到这个值与JavaScript下拉列表的变化。

但是我想指出,您对下拉列表中使用的重载的理解是错误的。此overload将显示默认选项框标签。

例如,你可以提示用户选择从列表中选择的东西:

@Html.DropDownListFor(m => m.IDs, new SelectList(Model. IDs), "Select Something...") 

如果你张贴的形式,您的例子为是,你可以看到所选的项目,形式遇到。如果您的视图模型以这种方式设置,则模型联编程序将接管并将此值绑定到“SelectedID”属性。

[HttpPost] 
public string DropDown(FormCollection form) 
{ 
    var selectedItem = form["IDs"]; 
    return selectedItem; 
}