Bootstrap.js未在nopcommerce 3.10中加载

时间:2015-03-08 17:22:10

标签: jquery asp.net-mvc twitter-bootstrap popover nopcommerce

我在nopcommerce的_Root.Head.cshtml页面中添加了bootstrap链接。但我的浏览器显示“Uncaught TypeError:undefined不是一个函数”,用于包括引导带在内的以下功能。请帮助我如何启用引导带和其他功能。

Html.AppendCssFileParts("~/Content/jquery-ui-themes/smoothness/jquery-ui-1.10.0.custom.min.css");
    Html.AppendScriptParts("~/Scripts/jquery-1.7.1.min.js");
    Html.AppendScriptParts("~/Scripts/public.ajaxcart.js");
    Html.AppendScriptParts("~/Scripts/public.common.js");
    Html.AppendScriptParts("~/Scripts/jquery-ui-1.10.0.min.js");
    Html.AppendScriptParts("~/Scripts/jquery.validate.unobtrusive.min.js");
    Html.AppendScriptParts("~/Scripts/jquery.validate.min.js");
    Html.AppendScriptParts("~/Scripts/jquery.unobtrusive-ajax.min.js");
    Html.AppendScriptParts("~/Scripts/js/bootstrap.js");

注意:以下图像是四个分开的图像。

BootStrap not loading Autocomplete
Nav on Popover

以下内容来自浏览器来源。 注意:这里bootstrap.js在jquery-1.7.1.min.js之前加载。

<link href="/Themes/DefaultClean/Content/globalstyle.css" rel="stylesheet" type="text/css" />
<link href="/Themes/DefaultClean/Content/bootstrap-responsive.css" rel="stylesheet" type="text/css" />
<link href="/Themes/DefaultClean/Content/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="/Themes/DefaultClean/Content/styles.css" rel="stylesheet" type="text/css" />
<link href="/Content/jquery-ui-themes/smoothness/jquery-ui-1.10.0.custom.min.css" rel="stylesheet" type="text/css" />

    <script src="/Scripts/js/bootstrap.js"></script>
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="/Scripts/jquery-ui-1.10.0.min.js"></script>
<script src="/Scripts/public.common.js"></script>
<script src="/Scripts/public.ajaxcart.js"></script>
<script src="/Scripts/slimbox2.js"></script>

1 个答案:

答案 0 :(得分:1)

NopCommerce&#34; AppendScriptParts&#34; (它是NopCommerce提供的MVC Html对象的扩展)不会按照添加的顺序呈现脚本。

事实上,它是颠倒的。它将每个脚本部分添加到列表的开头:

// excerpt from Nop.Web.Framework/UI/PageHeadBuilder.cs : AppendScriptParts
_scriptParts[location].Insert(0, new ScriptReferenceMeta
{
    ExcludeFromBundle = excludeFromBundle,
    Part = part
});

然后按顺序渲染它们:

// excerpt from Nop.Web.Framework/UI/PageHeadBuilder.cs : GenerateScripts
var result = new StringBuilder();
foreach (var path in _scriptParts[location].Select(x => x.Part).Distinct())
{
    result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", urlHelper.Content(path));
    result.Append(Environment.NewLine);
}
return result.ToString();

您可以在其他调用之前为RenderScriptParts添加对bootstrap.js的调用,或者始终可以在@Html.NopScripts(this.Url, ResourceLocation.Head)调用下的_Root.head.cshtml中直接插入对bootstrap.js的调用。你可以使用&#34;〜&#34;在脚本src属性中也是如此。

@Html.NopScripts(this.Url, ResourceLocation.Head)
<script src="~/Scripts/js/bootstrap.js"></script>

@Html.NopScripts(this.Url, ResourceLocation.Head)
<script src="@Url.Content("~/Scripts/js/bootstrap.js")"></script>

(使用较新的NopCommerce版本中的第一个替代方案)