1

我不确定当我从 DropdownList(校园)中选择一个项目时我错过了什么我想要 AutoPostBack 触发并加载另一个正在构建但它没有发生的 DropdownList....一个 DropDownListFor

问题是什么:下面的代码适用于任何常规 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>
4

2 回答 2

1

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

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

但是,您的脚本也应该按原样工作......只是更麻烦。我认为它不起作用,因为id="CampusId"页面上某处还有另一个元素。

于 2013-09-26T15:57:51.930 回答
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")
于 2013-09-26T23:57:21.550 回答