2017-12-04 3 views
0

선택시 동일한 텍스트의 옵션이 두 개 있지만 대소 문자가 다릅니다 : testTEST 예를 들어.ListBoxFor는 대소 문자를 구분하지 않습니다.

서버에서 선택한 항목 테스트가 하나만 받았습니다. 하지만 UI에서 나는 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을 선택하기위한이 제 3 자 라이브러리에 의해 발생합니다 생각하지만 나중에 내가 어떻게 기본 다중 선택과 같은 일을 사용하려고했습니다.


UPD :

현재이 같은 JQuery와, 뭔가를 사용하여 선택된 값을 설정하는 방법에 대한 내 생각 :

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

그러나 나를 위해 같은 ListBoxFor 확장이가 더 좋을 것입니다.

답변

2

내부적으로 ListBoxFor() 메서드는 IEnumerable<SelectListItem>을 생성하여 바인딩 할 속성 값을 기준으로 Selected 속성을 설정합니다. source code에서

, 당신은 private static IEnumerable<SelectListItem> GetSelectListWithDefaultValue() 그렇게 "test""TEST"의 값이 모두 일치하고 두 옵션은 selected="selected" 속성으로 설정 될 수 StringComparer.OrdinalIgnoreCase를 사용하여 값을 비교하여 볼 수 있습니다. 당신은 대소 문자를 구분 값을 고려하여 올바른 HTML을 생성하는 HtmlHelper 방법을 사용하려면

, 당신은 (확장 방법을 쓰기 코드의 템플릿으로 소스 코드를 사용해야합니다.에 대한

+0

감사합니다 귀하의 대답. 네, 나를 위해 최선의 솔루션처럼 보이지만 소스 파일에서 모든'ListBoxFor' 메서드를 복사 제외하고 그것을 구현하는 쉬운 방법은 무엇입니까? (헴 나는 내가 사용 해본 적어도 4 가지 방법을 복사해야했습니다. (ListBoxFor 메소드에서) – demo

+0

_easier way_가 무엇을 의미하는지 확신 할 수 없습니다. 내장 된'ListBoxFor()'메소드는 대소 문자를 무시하므로,이 동작을 원하지 않으면 자신 만의 코드를 작성해야합니다. 물론 자바 스크립트를 사용하여 페이지가 렌더링 된 후에 html을 수정하지만 그럴 수 있습니다. 유지 보수 및 테스트가 어렵습니다. 따라서 강력한 솔루션을 원한다면 소스 코드를 복사하고 수정하는 것이 가장 쉬운 방법입니다. –

+0

한 가지 더 궁금한 점이 있습니다 - 작은 변화로 github에서 코드를 가져 오는 경우 Microsoft에서 수정 된 코드를 사용하는 라이센스를 추가해야합니까? – demo

관련 문제