我正在尝试根据第一个下拉列表中的用户选择更新下拉列表。我找到了这篇关于该主题的 SO 帖子,但我不太确定如何将 jquery 添加到我的 Razor 视图中以过滤值。有人可以指出我正确的方向吗?
到目前为止,我的观点:
@using System.Security.Claims;
@model UpdateClaimFormModel;
<h2>UpdateClaimView</h2>
@using (@Html.BeginForm())
{
<select name="emailcheese">
<option selected disabled>Select User</option>
@foreach (var i in Model.UserNames)
{
<option>@i.ToString()</option>
}
</select>
<select name="authpolicy">
<option selected disabled>Select Claim:</option>
@foreach (var i in Model.UserClaims)
{
<option>@i.Type.ToString()</option>
}
</select>
<div class="form-group">
<button type="submit" class="btn btn-default">Whoo</button>
</div>
}
我的目标:
选择用户 [鲍勃、账单、吉姆]
选择声明:如果用户 bob:[1,2,3],如果用户账单:[1,4,8],如果用户他:[4,5,6]
这么简单,你可以做这样的事情
@using (@Html.BeginForm())
{
<select name="emailcheese" id="selectUserNames">
<option selected disabled>Select User</option>
@foreach (var i in Model.UserNames)
{
<option>@i.ToString()</option>
}
</select>
<select name="authpolicy" id="selectAuthPolicy">
</select>
<div class="form-group">
<button type="submit" class="btn btn-default">Whoo</button>
</div>
}
现在在脚本部分
$(function(){
var userClaims = @Html.Raw(Json.Encode(Model.UserClaims));
$(document).on('change','#selectUserNames'function(){
var selectedVal = $(this).val();
if(selectedVal == 'bob')
{
var html ='<option selected disabled>Select Claim:</option>';
for(var i=1;i<userClaims.length;++i)
{
if(i==1||i==2||i==3)
{
html=html+'<option>'+userClaims[i].Type+'</option>';
}
}
$('#selectAuthPolicy').html(html);
}
})
})
这只是如何实现这一目标的基本DEA,我刚刚为Bob尝试了许多其他方法可以实现THS