Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Asp.net MVC在带有<;的页面上有多个(相同的)局部视图;脚本>;局部视图内的标记_Javascript_Asp.net Mvc - Fatal编程技术网

Javascript Asp.net MVC在带有<;的页面上有多个(相同的)局部视图;脚本>;局部视图内的标记

Javascript Asp.net MVC在带有<;的页面上有多个(相同的)局部视图;脚本>;局部视图内的标记,javascript,asp.net-mvc,Javascript,Asp.net Mvc,正在寻找在页面上添加一次脚本的优雅方式,仅此而已。 我有一个局部视图,需要2个CSS文件和2个JS文件。在大多数情况下,只需要一个局部视图。在一个页面上,我需要3个相同的部分视图,每个部分视图有4个文件,所以我有6个JS链接和6个CSS链接。很难看 我最初的想法是使用jQuery查看标签(按id)在页面上是否存在。如果它们不是,则将它们添加进来。否则,什么也不做。这将是一个内联脚本,如 <script type="text/javascript" language="javascript"

正在寻找在页面上添加一次脚本的优雅方式,仅此而已。
我有一个局部视图,需要2个CSS文件和2个JS文件。在大多数情况下,只需要一个局部视图。在一个页面上,我需要3个相同的部分视图,每个部分视图有4个文件,所以我有6个JS链接和6个CSS链接。很难看

我最初的想法是使用jQuery查看标签(按id)在页面上是否存在。如果它们不是,则将它们添加进来。否则,什么也不做。这将是一个内联脚本,如

<script type="text/javascript" language="javascript">
     function(){
           var jQueryUICSS = $("#jQueryUICSS");
           if(!jQueryUICSS){
                document.write('link id="jQueryUICSS" href="/Content/smoothness/jquery-ui-1.8.5.custom.css" rel="stylesheet" type="text/css" />')
           }
           ...And so on for the other 3 tags.
 };

函数(){
var jQueryUICSS=$(“#jQueryUICSS”);
如果(!jqueryicss){
document.write('link id=“jQueryUICSS”href=“/Content/smoothness/jquery-ui-1.8.5.custom.css”rel=“stylesheet”type=“text/css”/>”)
}
…等其他3个标签。
};
但是,我不确定这是否有效(或者开发负责人是否会接受):P


还有其他想法吗?

把它们放在你的主人那里。CSS和Javascript文件被缓存。加载一次,不用担心。

将它们放在您的主机中。CSS和Javascript文件被缓存。加载一次,不用担心。

David

我在代码中使用了两个静态HTMLHelper来实现这个场景。它的工作原理是每个请求填充context.items集合,因此如果context.items集合中存在一个项,则不会添加两次。不管怎么说,Wisdoom的苏格兰话已经够多的了,“我要在围场上待着waantin the coade”

对于我们的脚本:

public static MvcHtmlString Script(this HtmlHelper html, string path)
{
    var filePath = VirtualPathUtility.ToAbsolute(path);
    HttpContextBase context = html.ViewContext.HttpContext;
    // don't add the file if it's already there
    if (context.Items.Contains(filePath))
        return MvcHtmlString.Create("");

    // add the beast...
    context.Items.Add(filePath, filePath);

    return MvcHtmlString.Create(
        string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>", filePath));
}
大卫

我在代码中使用了两个静态HTMLHelper来实现这个场景。它的工作原理是每个请求填充context.items集合,因此如果context.items集合中存在一个项,则不会添加两次。不管怎么说,Wisdoom的苏格兰话已经够多的了,“我要在围场上待着waantin the coade”

对于我们的脚本:

public static MvcHtmlString Script(this HtmlHelper html, string path)
{
    var filePath = VirtualPathUtility.ToAbsolute(path);
    HttpContextBase context = html.ViewContext.HttpContext;
    // don't add the file if it's already there
    if (context.Items.Contains(filePath))
        return MvcHtmlString.Create("");

    // add the beast...
    context.Items.Add(filePath, filePath);

    return MvcHtmlString.Create(
        string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>", filePath));
}

我曾经想过这一点,但我的问题是,我使用的片段的miriad会污染主文件,而不管使用它们的实际代码是否被使用。我想是马的原因吧。你的方法在那些没有大量使用css和js-tho的站点上会很好地工作。“被污染了?”你的web.config中的12行额外的代码不会杀死你。如果主控中的12行代码对您来说“太大”,请将多个文件合并为一个文件。除非您需要它们是动态的,这意味着同一部分可以使用两个不同的jquery/css文件,否则任何其他解决方案都超过了engineering.jfar-我们同意在“任何其他解决方案”上存在分歧-天哪,:)!!您所指的“计数”行可能是12行,也可能不是24行或其他任何行。另外,总是不断地“重新访问”主文件以保持一切正常进行。这增加了裁员的机会等。在我的情况下(不一定是上述情况),“污染”确实是我的选择。猫和猫的皮肤确实使动物标本的种类繁多是的,也许动态性是一个考虑因素,但在我上面提到的情况下,不一定如此。不管怎样,我会在潮湿/多风的苏格兰祝你晚安。@jim-重访大师没什么大不了的,是吗?这很容易检查。这只是重新发明轮子。如果您有那么多文件,出于性能原因,您可能应该合并并缩小它们。我在下面看到了你的解决方案。我不知道任何时候用C生成javascript都会失败。我曾经想过这一点,但我遇到的问题是,我所使用的片段的miriad会污染主文件,而不管使用它们的实际代码是否被使用。我想是马的原因吧。你的方法在那些没有大量使用css和js-tho的站点上会很好地工作。“被污染了?”你的web.config中的12行额外的代码不会杀死你。如果主控中的12行代码对您来说“太大”,请将多个文件合并为一个文件。除非您需要它们是动态的,这意味着同一部分可以使用两个不同的jquery/css文件,否则任何其他解决方案都超过了engineering.jfar-我们同意在“任何其他解决方案”上存在分歧-天哪,:)!!您所指的“计数”行可能是12行,也可能不是24行或其他任何行。另外,总是不断地“重新访问”主文件以保持一切正常进行。这增加了裁员的机会等。在我的情况下(不一定是上述情况),“污染”确实是我的选择。猫和猫的皮肤确实使动物标本的种类繁多是的,也许动态性是一个考虑因素,但在我上面提到的情况下,不一定如此。不管怎样,我会在潮湿/多风的苏格兰祝你晚安。@jim-重访大师没什么大不了的,是吗?这很容易检查。这只是重新发明轮子。如果您有那么多文件,出于性能原因,您可能应该合并并缩小它们。我在下面看到了你的解决方案。无论何时,只要你用C生成javascript,你就输了。
<%=Html.Css("~/Content/Site.Css")%>
<%=Html.Script("~/Scripts/default.js")%>
// this of course only works for items going in via the current
// request and by this method