使用TwitterBootstrap布局的AutoPostBack - MVC 4

时间:2013-09-26 12:37:29

标签: jquery asp.net-mvc-4 twitter-bootstrap cascadingdropdown

当我从DropdownList(校园)中选择一个项目时,我不确定我错过了什么我希望AutoPostBack触发并加载另一个正在构建的DropdownList但它没有发生....我正在努力工作使用DropDownListFor上的autopostback

有什么问题:以下代码适用于任何常规MVC 4布局但只有问题 TwitterBootStrap布局,我需要更改或使用TwitterBootStrap布局做什么?

这是我的代码:,

@using (Ajax.BeginForm("CampusSelect", "Facility", new AjaxOptions { UpdateTargetId = "Campus_Building" }))
{ 
    @Html.DropDownListFor(
            m =>  m.CampusId,
            new SelectList(Model.GetAllCampus(), "CampusId", "Text"),
           string.Empty
        )
}
<script type="text/javascript">
    $('#CampusId').change(function () {
        $(this).parents('form').submit();
    });
</script>

2 个答案:

答案 0 :(得分:1)

为简单起见,您可以使用以下代码应用onchange事件。

@Html.DropDownListFor(
    m =>  m.CampusId,
    new SelectList(Model.GetAllCampus(), "CampusId", "Text"),
    string.Empty,
    new { onchange = "$(this.form).submit();"}
)

但是,你的脚本也应该按原样运行......它只是比较麻烦。我认为它不起作用,因为页面上有另一个元素id="CampusId"

答案 1 :(得分:1)

您使用了错误的重载。您没有设置下拉列表的ID。它应该是:

@Html.DropDownListFor(
    m =>  m.CampusId,
    new SelectList(Model.GetAllCampus(), "CampusId", "Text"),
    new { id = "CampusId" }
)

然后你的脚本就可以了。

为避免与重载混淆,请使用TwitterBootstrapMVC

@Html.Bootstrap().DropDownListFor(m =>  m.CampusId, new SelectList(Model.GetAllCampus(), "CampusId", "Text")).Id("CampusId")