当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC中的脚本和CSS注册助手?

如何解决《ASP.NETMVC中的脚本和CSS注册助手?》经验,为你挑选了2个好方法。

我曾尝试使用ASP.NET MVC一段时间,然后我遇到一个问题,我不想在母版页中包含我的所有js和css.但是如何从我的特定视图中将其注册到母版页的头部呢?



1> sliderhouser..:

默认母版页模板包含头部的Content PlaceHolder.如果没有,您可以轻松添加一个:


    
    

然后,您的观点可以将他们想要的任何内容放在头部:


    
    



2> Jason..:

它看起来并不像ASP.NET MVC框架中有一个简单的"内置"选项.如果您正在使用用户控件(.ascx),如果您要创建自包含控件(也想管理自己的JavaScript要求),那么您甚至无法使用占位符来帮助您.

最后我创建了一个帮助器类,其中有几个方法:

private static SortedList GetRegisteredScriptIncludes()
{
    var registeredScriptIncludes = System.Web.HttpContext.Current.Items["RegisteredScriptIncludes"] as SortedList;

    if (registeredScriptIncludes == null)
    {
        registeredScriptIncludes = new SortedList();
        System.Web.HttpContext.Current.Items["RegisteredScriptIncludes"] = registeredScriptIncludes;
    }

    return registeredScriptIncludes;
}

public static void RegisterScriptInclude(this HtmlHelper htmlhelper, string script)
{
    var registeredScriptIncludes = GetRegisteredScriptIncludes();
    if (!registeredScriptIncludes.ContainsValue(script))
    {
        registeredScriptIncludes.Add(registeredScriptIncludes.Count, script);
    }
}

public static string RenderScripts(this HtmlHelper htmlhelper)
{
    var registeredScriptIncludes = GetRegisteredScriptIncludes();
    var scripts = new StringBuilder();
    foreach (string script in registeredScriptIncludes.Values)
    {
        scripts.AppendLine("");
    }
    return scripts.ToString();
}

无论如何,这是尝试和展示其工作方式的基本形式.它可以通过多种方式得到增强,但目前它只是为您过滤掉重复的脚本插入请求.无论何时你想在ascx(或aspx)中添加一个新脚本,你都可以这样做:

<%
    Html.RegisterScriptInclude(Url.Content("~/Scripts/MapLayers/MapLayer.js"));
    Html.RegisterScriptInclude(Url.Content("~/Scripts/MapLayers/Vehicles.js"));
%>

然后你需要记住在完成后输出它们.这是通过在页面中要输出脚本标记的位置进行以下调用来实现的:

<%=Html.RenderScripts() %>

到目前为止似乎对我有用.我确实有一半期望渲染问题取决于RenderScripts被调用的时间点,特别是如果还没有调用所有的RegisterScriptIncludes,但到目前为止似乎完成了这项工作.如果你最后渲染脚本,那么你应该没有问题.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有