我有一个下拉列表,如下所示,它只显示用户名及其值的列表:
@Html.DropDownListFor(m => m.SelectedUser,
Model.UsersSelectList,
"-- Select One --",
new { onChange = "users_onchange();" })
并且javascript如下所示,当项目发生变化时会调用一个动作:
function users_onchange() {
var selectedUserId = $('#SelectedUser').val();
if (selectedUserId == "") {
selectedUserId = 0;
}
$('#EmailAccountsContainer')
.load('/MyEntityController/EmailAccounts', { userId: selectedUserId });
}
并且EmailAccountsContainer只是一个div:
<div id="EmailAccountsContainer"></div>
并且EmailAccounts Action接受userId并返回显示另一个下拉列表的部分视图。
问题是对Action的调用仅在第一次更改“用户”下拉列表后发生。如果选择了第二个用户,则不会对操作进行调用。
我也拒绝了控制器上的缓存:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class MyEntityController : Controller
如何解决这个问题?
答案 0 :(得分:1)
使用 on Event 与Body标记
绑定onchange事件$(document).ready(function(){
$('body').on('change', '#SelectedUser', function(){
var selectedUserId =$(this).val();
if (selectedUserId == "") {
selectedUserId = 0;
}
$('#EmailAccountsContainer')
.load('/MyEntityController/EmailAccounts', { userId: selectedUserId });
});
});
答案 1 :(得分:0)