我正在使用editortemplate,我在下面显示了部分代码。 脚本标记会针对部分视图呈现的每一行重复。
有没有办法让脚本标记进入页面标题,或者至少只将它包含在页面中一次?
我希望部分视图中的代码能够真正属于它。
@* DisplayTemplates/contact.cshtml *@
@model Online.Web.Contacts.Contact
<script id="xxx">
stuff here.
</script>
<tr>
<td>@Html.EditorFor(x => x.FirstName)</td>
</tr>
答案 0 :(得分: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>
答案 1 :(得分:0)
嗯。这是我的2c,但是如果脚本不应该重复,那么模板不是正确的地方?
如何使用Html Helper
答案 2 :(得分: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,但仅限于一个完整的页面请求。