2011-01-27 63 views
5

我正在使用editortemplate,我在下面顯示了部分代碼。 對於由局部視圖呈現的每個行重複腳本標記。mvc razor腳本editortemplate

有沒有辦法讓腳本標籤進入頁眉,或者至少它只包含在頁面中一次?

我想在部分視圖中的代碼,因爲這是它真正屬於它的地方。


@* 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 2011-01-27 08:59:32

0

嗯。這是我的2c,但如果腳本不應該重複,那麼模板不是正確的地方?

如何使用Html Helper

+0

使用助手可能是一個選項。有可能讓助手以某種方式將標籤添加到標頭中?我在這裏要做的是在行顯示模板中包含一個java腳本編輯模板。編輯模板屬於該行。 *不*模型,所以在這個意義上,它是在正確的地方。 – Jim 2011-01-27 08:58:33

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> 
} 

Context.Items似乎是爲此目的而製作的。它持續多次調用同一個EditorTemplate,但僅限於一個完整的頁面請求。