2011-06-13 3 views
4

Razor MultiSelectBox에서 들여 쓰기 된 항목을 만드는 데 문제가 있습니다.MultiSelectBox에서 값을 들여 쓰려면 어떻게합니까?

내가 수동으로 HTML 쓸 때 그것은 완벽하게 작동합니다 :

<select name="testfoo123" multiple="multiple" size="15"> 
    <option value="PARENT1">Parent</option> 
    <option value="CHILD1">&nbsp;I am indented</option> 
    <option value="CHILD2">&nbsp;I am indented</option> 
    <option value="PARENT1">Parent2</option> 
    <option value="CHILD1">&nbsp;I am indented</option> 
    <option value="CHILD2">&nbsp;I am indented</option> 
</select> 

면도기의 HTML 헬퍼는, 그러나, 그대로 형태로 선행 비 분리 공백을 표시합니다. 예상대로, 들여 쓰기를위한 리터럴 공백 문자는 완전히 무시됩니다.

나는 다중 선택 상자를 생성하기 위해 사용하고 코드는 다음과 같습니다

@Html.ListBoxFor(model => mySelectedValues, new MultiSelectList(myValues), new { size = "15" }) 

답변

3

해결책을 찾았습니다. 첫 번째 : 다중 선택 상자는 아마도 나무와 같은 제어를위한 최선의 선택은 아니지만 프로그래머에게 그 결정을 맡길 것입니다.

해결 방법 : 비 구분 공백 문자를 추가하십시오. 이들은 필터링되지 않지만 HTML에 해당하는 (일반 공백 문자와 마찬가지로) 것은 동일합니다.

const char nonBreakingSpace = '\u00A0'; 

각 어린이 앞에이 문자를 추가하십시오. 별도의 목록을 예로 사용하면 다음과 같습니다.

var sendMeToTheHtmlHelper = new List<String>(); 
foreach(String yourString in yourCollection) { 
    // If this element is a child and needs indentation: 
    sendMeToTheHtmlHelper.Add(nonBreakingSpace + location); 
    // else just add as normal 
} 
+1

감사합니다. 당신은 지독한 "대시 들여 쓰기"목록에서 내 사이트를 저장했습니다 :) – Kralizek

+0

그것이 당신을 도왔다 니 기쁩니다. –

0

내장 된 웹 페이지 및 MVC가 자동으로 HTML은 모든 입력 값을 인코딩 모두에서 HTML 도우미. 내장 헬퍼를 사용하여 시나리오를 작동시킬 수있는 방법이 없다고 확신합니다.

그러나 다행히도 이러한 도우미에 대한 모든 소스 코드는 MVC source code release의 일부로 CodePlex 사이트에서 사용할 수 있습니다. 해당 소스 코드를보고 들여 쓰기가있는 시나리오를보다 효과적으로 목표로하는 사용자 지정 도우미를 작성할 수 있습니다.

관련 문제