2015-01-30 2 views
0

옵션 목록에서 항목을 선택할 수있는 편집기 템플릿을 만들고 해당 항목이 특정 방식으로 목록에 추가됩니다.편집기 기존 개체를 목록에 추가하는 템플릿

@EditorFor(m => m.References) 

그리고 모양을 출력 : (목록의 각 항목에 대한 앵커)

<a href="whatever1">Reference1</a> 
<a href="whatever2">Reference2</a> 
<a href="whatever3">Reference3</a> 
즉 나는 (참고이 항목의 목록입니다) 같은 편집기 템플릿을 참조 할 것

다음이 목록 (또는 이에 상응하는 무엇인가)

<input type='text' class='autocomplete-references' /> 

가 어떻게이 작업을 수행 할 수 있습니다에 추가하는 선택 기능과 함께 JQuery와 자동 완성 입력 필드? 나는 이것을 시작하는 방법조차 파악할 수없는 것 같습니다.

+1

EditorTemplates가 작동하는 방식이나 사용되는 방식을 실제로 이해하지 못했을 것입니다. "옵션 목록에서 항목을 선택할 수 있도록"EditorTemplates를 사용하지 마십시오. Instad, EditorTemplate을 사용하여 목록의 항목을 렌더링합니다. 일반적으로 EditorTemplates를 코드로 포장하여 항목 선택을 할 수 있습니다. 예를 들어 Partial에 넣을 수 있습니다. EditorTemplates는 하위 유형으로 구성되어 있어도 특정 유형의 개별 항목을 렌더링 할 수있을 때 가장 잘 작동합니다. 예를 들어, EditorTemplate을 사용하여 콜렉션을 렌더링 할 수 있지만 그 콜렉션을 다른 것으로 래핑해야합니다. –

+0

내 모델 중 하나의 멤버의 편집 기능을 렌더링하는 데 EditorTemplate을 사용하지 않는 이유는 무엇입니까? 목록에서 항목을 렌더링하기 위해 EditorTemplate을 만드는 이유는 무엇입니까? DisplayTemplate이 아닌가? – Tevis

+0

당신은 편집 기능을 렌더링하지 않습니다. 편집 할 ITEM을 렌더링합니다. 이 기능이 간단한 텍스트 상자 또는 확인란 인 경우 괜찮 으면 ... 그러나 관련 선택 프로세스 인 경우 잘못된 위치에서 수행하고있는 것입니다. 예를 들어, 편집기 템플릿을 사용하여 그리드의 개별 행을 렌더링 할 수 있지만 그리드 자체를 렌더링하는 데 사용하지는 않습니다. 페이징 또는 정렬과 같은 기능을 제공합니다. –

답변

0

Html.EditorFor은 "편집기 템플릿"을 사용합니다. 몇 가지 기본 시나리오를 처리하기 위해 MVC에 기본으로 제공되는 몇 가지 기본 기능이 있지만, Views\Shared\EditorTemplates에서보기를 작성하여 직접 추가 할 수 있습니다. 유형 (DateTime.cshtml, Boolean.cshtml, String.cshtml 등), DataType enum (EmailAddress.cshtml, ImageUrl.cshtml 등)의 멤버 또는 원하는 모든 것 (주의 사항 포함).

"원하는 모든 것"부분은 UIHint으로 속성을 꾸밀 필요가 있습니다. 여기에서 사용할 템플릿을 지정하거나 템플릿을 명시 적으로 지정해야합니다. 예를 들어 [UIHint("Foo")]을 속성에 추가 한 경우 Html.EditorFor은 편집기 템플릿 Foo.cshtml을 찾습니다. 다른 방법으로는 Html.EditorFor에 템플릿 이름을 전달할 수 있습니다 : 당신이 실제로 IEnumerable<Reference> 같은 대한 편집기 템플릿을 가질 수 없기 때문에이 부분이 중요하다

@Html.EditorFor(m => m.SomeProperty, "Foo") 

이유입니다.

@Html.EditorFor(m => m.References, "MyReferencesEditorTemplate") 

를 또는, 상기 한 바와 같이 재산에 UIHint를 사용하여 References 재산 같은 것을 함께 사용자 정의 편집기 템플릿을 사용하려면, 당신은해야 할 것입니다.

관련 문제