我想将所有JavaScript代码都放在一个部分中;就body在我的主版式页面上的结束标记之前,只是想知道最好的方法,MVC样式。
body
例如,如果我创建一个DisplayTemplate\DateTime.cshtml使用jQuery UI的DateTime Picker 的文件,而不是将JavaScript直接嵌入该模板中,但是它将呈现中间页。
DisplayTemplate\DateTime.cshtml
在我的普通视图中,我可以先使用@section JavaScript { //js here }然后@RenderSection("JavaScript", false)在主布局中使用,但这在显示/编辑器模板中似乎不起作用-有什么想法吗?
@section JavaScript { //js here }
@RenderSection("JavaScript", false)
您可以结合使用两个助手:
public static class HtmlExtensions { public static MvcHtmlString Script(this HtmlHelper htmlHelper, Func<object, HelperResult> template) { htmlHelper.ViewContext.HttpContext.Items["_script_" + Guid.NewGuid()] = template; return MvcHtmlString.Empty; } public static IHtmlString RenderScripts(this HtmlHelper htmlHelper) { foreach (object key in htmlHelper.ViewContext.HttpContext.Items.Keys) { if (key.ToString().StartsWith("_script_")) { var template = htmlHelper.ViewContext.HttpContext.Items[key] as Func<object, HelperResult>; if (template != null) { htmlHelper.ViewContext.Writer.Write(template(null)); } } } return MvcHtmlString.Empty; } }
然后在您的_Layout.cshtml:
_Layout.cshtml
<body> ... @Html.RenderScripts() </body>
在某些模板中:
@Html.Script( @<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> )