在选择中,我有2个选项,文字相同,但大小写不同:test
和TEST
为例。
从服务器我只收到一个选定的项目测试。但在用户界面上,我看到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
的第三方库引起的,但后来我尝试使用原生多选和同样的事情发生 - 结果我有2个选择的选项。
UPD:
目前我的想法是使用jquery设置选定的值,如下所示:
$('#tags-list-box').val('test');
但最好在ListBoxFor扩展名中使用它。对于我来说。
答案 0 :(得分:2)
ListBoxFor()
方法在内部生成自己的IEnumerable<SelectListItem>
,以根据绑定属性的值设置Selected
属性。
从source code,您可以看到private static IEnumerable<SelectListItem> GetSelectListWithDefaultValue()
使用StringComparer.OrdinalIgnoreCase
比较值,因此"test"
和"TEST"
的值都匹配,并且两个选项都相同将使用selected="selected"
属性设置。
如果您想使用HtmlHelper
方法生成正确的html来说明区分大小写的值,那么您需要编写扩展方法(使用源代码作为代码的模板。