为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

饮歌长啸 2019-07-15 09:56:15
在编辑器/显示模板中使用节我希望将所有JavaScript代码保存在一个部分中;就在结束之前body标签在我的主布局页面,只是想知道最好的去它,MVC风格。例如,如果我创建一个DisplayTemplate\DateTime.cshtml文件,它使用jQueryUI的datetimePicker,而不是我将JavaScript直接嵌入到该模板中,但随后它将呈现页面中部。在我正常的视图中,我可以用@section JavaScript { //js here }然后@RenderSection("JavaScript", false)在我的主布局中,但这在显示/编辑器模板中似乎不起作用-有什么想法吗?
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

你可以将两名助手连在一起:

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:

<body>...@Html.RenderScripts()</body>

在某个模板的某处:

@Html.Script(
    @<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>)


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信