ASP.NET MVC Listbox处理选定的项目事件

时间:2011-06-29 10:47:40

标签: jquery asp.net-mvc

我在视图中使用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;

反过来又返回到控制器以传入强类型视图。

我的问题是,如何监控选择项目事件?我需要能够在用户进行选择和/或取消选择时执行某些操作。

感谢。

1 个答案:

答案 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