mvc razor editortemplate中的脚本

时间:2011-01-27 07:57:07

标签: asp.net-mvc-3 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>

3 个答案:

答案 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,但仅限于一个完整的页面请求。