ListBoxFor不区分大小写

时间:2017-12-04 12:17:08

标签: jquery html asp.net-mvc razor drop-down-menu

在选择中,我有2个选项,文字相同,但大小写不同:testTEST为例。

从服务器我只收到一个选定的项目测试。但在用户界面上,我看到testTEST都已被选中。

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的第三方库引起的,但后来我尝试使用原生多选和同样的事情发生 - 结果我有2个选择的选项。

UPD:

目前我的想法是使用jquery设置选定的值,如下所示:

$('#tags-list-box').val('test');

但最好在ListBoxFor扩展名中使用它。对于我来说。

1 个答案:

答案 0 :(得分:2)

ListBoxFor()方法在内部生成自己的IEnumerable<SelectListItem>,以根据绑定属性的值设置Selected属性。

source code,您可以看到private static IEnumerable<SelectListItem> GetSelectListWithDefaultValue()使用StringComparer.OrdinalIgnoreCase比较值,因此"test""TEST"的值都匹配,并且两个选项都相同将使用selected="selected"属性设置。

如果您想使用HtmlHelper方法生成正确的html来说明区分大小写的值,那么您需要编写扩展方法(使用源代码作为代码的模板。