【问题标题】:Can my dropdownlistbox on MVC fire an event so I can populate another?MVC 上的下拉列表框可以触发一个事件,以便我可以填充另一个事件吗?
【发布时间】:2011-08-06 11:46:54
【问题描述】:
我的 MVC 网页上有一个下拉列表框。下拉列表允许我选择国家名称。当用户更改国家/地区时,我希望另一个下拉列表中包含该国家/地区的城市。
这可能与MVC有关吗?我不确定是否应该使用 javascript、AJAX、jquery 或两者的组合。
我们将不胜感激所有帮助和建议。
【问题讨论】:
标签:
jquery
asp.net-mvc
ajax
model-view-controller
【解决方案1】:
使用 jQuery 的 ajax 功能。当第一个列表更改 (.change()) 时,向 MVC JSON 操作发送 ajax 请求。当请求返回时,您可以使用它来填充下一个下拉列表。
【解决方案2】:
$('#myDropDown').live('change', function(){
});
您还可以使用 Ajax 调用辅助页面,在该页面中填充并返回一个序列化的 json。
另一个选项是使用 AutoPostBack 和 OnSelectedIndexChanged(将其用作reference)
【解决方案3】:
<script type="text/javascript >
//Function for package binding on ddlindustry selected change index
$("#ID_OF_THAT DDL").change(function () {
var vv = $("#ID_OF_THAT DDL option:selected").val();
if (vv >= 0) {
$.ajax({
type: "GET",
url: '<%=Url.Action("ACTION", "CONTROLLER") %>',
data: {
"VARIABLE_TO_PASS": $("#ID_OF_THAT DDL option:selected").val()
}, //you can call public action from controller
dataType: "text", //in data enter value which u have 2 pass must same as like control actioresult passing param
contentType: "application/json",
success: bindpackage
})
}
});
</script>
<script type="text/javascript">
function bindpackage(result) {
eval(result);
}
之后在你的控制器中:
public ActionResult Function123 (int VARIABLE_TO_PASS){
RjsResult r = new RjsResult();
ViewData["Name"] = function to get data;
r.update("DIV_NAME","Name of the partial to update",ViewData, ControllerContext);
return r;
}
希望有帮助:)