在编辑器/显示模板中使用节

在编辑器/显示模板中使用节

我希望将所有JavaScript代码保存在一个部分中;就在结束之前body标签在我的主布局页面,只是想知道最好的去它,MVC风格。

例如,如果我创建一个DisplayTemplate\DateTime.cshtml文件,它使用jQueryUI的datetimePicker,而不是我将JavaScript直接嵌入到该模板中,但随后它将呈现页面中部。

在我正常的视图中,我可以用@section JavaScript { //js here }然后@RenderSection("JavaScript", false)在我的主布局中,但这在显示/编辑器模板中似乎不起作用-有什么想法吗?


饮歌长啸
浏览 486回答 3
3回答

江户川乱折腾

你可以将两名助手连在一起:public&nbsp;static&nbsp;class&nbsp;HtmlExtensions{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;MvcHtmlString&nbsp;Script(this&nbsp;HtmlHelper&nbsp;htmlHelper,&nbsp;Func<object,&nbsp;HelperResult>&nbsp;template) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htmlHelper.ViewContext.HttpContext.Items["_script_"&nbsp;+&nbsp;Guid.NewGuid()]&nbsp;=&nbsp;template; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MvcHtmlString.Empty; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;IHtmlString&nbsp;RenderScripts(this&nbsp;HtmlHelper&nbsp;htmlHelper) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(object&nbsp;key&nbsp;in&nbsp;htmlHelper.ViewContext.HttpContext.Items.Keys) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(key.ToString().StartsWith("_script_")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;template&nbsp;=&nbsp;htmlHelper.ViewContext.HttpContext.Items[key]&nbsp;as&nbsp;Func<object,&nbsp;HelperResult>; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(template&nbsp;!=&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htmlHelper.ViewContext.Writer.Write(template(null)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MvcHtmlString.Empty; &nbsp;&nbsp;&nbsp;&nbsp;}}然后在你的_Layout.cshtml:<body>...@Html.RenderScripts()</body>在某个模板的某处:@Html.Script( &nbsp;&nbsp;&nbsp;&nbsp;@<script&nbsp;src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")"&nbsp;type="text/javascript"></script>)
打开App,查看更多内容
随时随地看视频慕课网APP