我在视图中使用HTML.ListBox:
<%= Html.ListBox("projects", Model.Projects) %>
这在模型中填充了IEnumerable <SelectListItem>
:
Projects = project.Select(a => new System.Web.Mvc.SelectListItem
{
Value = "foo",
Text = a.project + "(" + a.count + ")",
Selected = false
});
return Projects;
反过来又返回到控制器以传入强类型视图。
我的问题是,如何监控选择项目事件?我需要能够在用户进行选择和/或取消选择时执行某些操作。
感谢。
答案 0 :(得分:4)
如果您熟悉jQuery,您甚至可以捕获更改并提交您的FORM:
$('#projects').change(function () {
$(this).parents('form').submit();
});
或者您可以使用ajax向动作提交一些数据
$('#projects').change(function () {
$.ajax({
type: 'POST',
url: '<%=Url.Action("<action>", "<controller>")%>',
data: { id: $('#projects').val() },
dataType: 'json',
complete: function(XMLHttpRequest, textStatus) {
// Do something here.
}
});
});
<强>更新强>:
由于您正在使用jQuery Dropdown Check List,因此您可以捕获onItemClick甚至并调用控制器的操作,传递所选选项的值并检查/未检查状态:
$("#projects").dropdownchecklist({
emptyText: "select something",
width: 150,
onItemClick: function(checkbox, selector){
var isChecked = checkbox.prop("checked");
alert("element id: " + checkbox.prop("value"));
$.ajax({
type: 'POST',
url: '<%=Url.Action("<action>", "<controller>")%>',
data: { selecteId: checkbox.prop("value"), isChecked: isChecked },
dataType: 'json',
complete: function(XMLHttpRequest, textStatus) {
// Do something here.
}
});
}
});
您可以查看此fiddle。