在select中,我有两个选项具有相同的文本,但大小写不同:以test和TEST为例。
从服务器上,我只接收一个选定的项测试。但是在UI中,我看到test和TEST都被选中了。
var tagsList = Model.AllTags.Select(t => new SelectListItem
{
Value = t,
Text = t
});
<div id="tags-list-container" class="review-tags__select" style="display: none;">
@Html.ListBoxFor(m => m.SelectedTags, tagsList, new { id = "tags-list-box" })
</div>有什么办法能改变我的选择吗?
首先,我认为这是由多个选择SumoSelect的第三方库引起的,但后来我尝试使用本机多选择并且发生了相同的事情--结果我有两个选择选项。
UPD:
目前,我对使用jquery设置选定值的想法如下:
$('#tags-list-box').val('test');但是,对于我来说,在ListBoxFor扩展中使用这一点会更好。
发布于 2017-12-04 21:27:00
在内部,ListBoxFor()方法生成自己的IEnumerable<SelectListItem>,以根据绑定到的属性的值设置Selected属性。
从源代码中可以看到,private static IEnumerable<SelectListItem> GetSelectListWithDefaultValue()比较了使用StringComparer.OrdinalIgnoreCase的值,因此"test"和"TEST"的值都匹配,这两个选项都将使用selected="selected"属性进行设置。
如果要使用HtmlHelper方法生成正确的html以说明区分大小写的值,则需要编写扩展方法(使用源代码作为代码的模板)。
https://stackoverflow.com/questions/47633205
复制相似问题