2011-01-27 10 views
5

editortemplate을 사용하고 있습니다. 아래 부분 코드를 보았습니다. 부분 뷰에서 렌더링되는 각 행에 대해 script 태그가 반복됩니다.mvc 면도기 편집 스크립트

페이지 헤더에 스크립트 태그를 넣을 수있는 방법이 있습니까, 아니면 최소한 페이지에 한 번만 포함 시켰습니까?

코드가 부분 뷰에서 실제로 어디에 속하는 지보고 싶습니다.


@* DisplayTemplates/contact.cshtml *@ 
@model Online.Web.Contacts.Contact 

<script id="xxx"> 
    stuff here. 
</script> 

<tr> 
    <td>@Html.EditorFor(x => x.FirstName)</td> 
</tr> 

답변

2

당신이 시도 할 수 사용에 대한 :

@model IEnumerable<Online.Web.Contacts.Contact> 
<script id="xxx"> 
    stuff here. 
</script> 
@Html.EditorForModel() 

을 한 후 하나의 연락처에 대한 다른 편집기 템플릿 :

@model Online.Web.Contacts.Contact 
<tr> 
    <td>@Html.EditorFor(x => x.FirstName)</td> 
</tr> 
+0

이것은 옵션 일 수 있습니다. 단편화 된 것처럼 보입니다. 각 편집 가능한 그리드에 대해 세 개의 템플릿을 코딩하겠습니다. 아마도 그것을 다시 바라보고 모든 것을 다른 방식으로 수행해야 할 것입니다. – Jim

+0

@ 짐, 예, 스크립트를 기본보기에 넣는 것이 더 나은 옵션처럼 보입니다. –

+0

나는 이것에 만족하지 않는다 - 그러나 그것은 정답이다. 나는 사물을 완전히 다른 방식으로 요소 화하기로 결정했다. – Jim

0

흠. 이것은 내 2c이지만, 스크립트가 반복되지 않아야한다면 템플릿이 올바른 장소가 아닌 것입니까?

어떻게이 Html Helper

+0

헬퍼를 사용하면 옵션이 될 수 있습니다. 헬퍼가 헤더에 스크립트 태그를 어떻게 든 추가 할 수 있습니까? 내가 여기서하려고하는 것은 행 displaytemplate에 자바 스크립트 편집 템플릿을 포함시키는 것입니다. 편집 템플리트는 행에 속합니다. * 아닙니다 * 모델에, 그래서 그 의미에서 그것은 올바른 장소에 있습니다. – Jim

0

내가 마지막으로 이것에 대한 해결책을 가지고 그 적어도 ASP.NET MVC3에서는 안정적으로 작동하는 것 같습니다. 내 주소 편집기 템플릿에서 발췌 한 내용은 다음과 같습니다.

@if(!Context.Items.Contains("AddressScriptsDone")) 
{ 
    Context.Items.Add("AddressScriptsDone", "true"); 
    <script type="text/javascript" src="@Url.Content("~/Scripts/Address.js?" + _Config.WebAppVersion)"></script> 
} 

컨텍스트. 항목이이 용도로 사용 된 것으로 보입니다. 동일한 EditorTemplate을 여러 번 호출하지만 하나의 전체 페이지 요청에 대해서만 지속됩니다.