PFB我的代码。我在asp.net mvc中使用引导程序设计了一个下拉列表。列表的内容是静态的和硬编码的。在下拉菜单中更改选择时,最新项目不会更新。我附上我的代码以及问题的屏幕截图。在下拉列表中,即使我选择“已分配”,状态列表也不会得到更新。
the status field is not changing to assigned or in progress <div class="dropdown">
<button class="btn btn-default dropdown-toggle" runat="server" type="button" id="dropdownStatus" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Status
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownStatus">
<li><a href="#">Assigned</a></li>
<li><a href="#">In Progress</a></li>
<li><a href="#">Resolved</a></li>
</ul>
</div>
答案 0 :(得分:0)
如果使用引导程序下拉列表,则必须使用Javascript更新模型。只需在页面上隐藏,然后将处理程序附加到下拉菜单的更改中即可。
要注意的一件事是,Bootstrap下拉列表不会触发更改事件。您必须将处理程序附加到各个项目。像这样:
$('.dropdown-menu a').click(function(e) {
// set the hidden field to the new value
var newValue = $(this).text();
$('#foo').val(newValue);
});
@Html.HiddenFor(m => m.myProperty, new {id = "foo"})
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" runat="server" type="button" id="dropdownStatus" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Status
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownStatus">
<li><a href="#">Assigned</a></li>
<li><a href="#">In Progress</a></li>
<li><a href="#">Resolved</a></li>
</ul>
</div>
当然,如果您确实不需要Bootstrap下拉列表,也许只需要看起来像它,则可以使用常规HTML下拉列表并像bootstrap下拉列表一样对其进行样式设置,非常容易:>
@Html.DropDownListFor(m => m.myProperty, new {@class = "form-control"})
form-control是一个引导CSS类,可让您的输入控件更像Bootstrap。尽管并不完全一样(尽管我更喜欢),所以选择取决于您。