Nopcommerce插件视图:找不到CSS和JavaScript文件(404)

时间:2016-11-17 20:43:47

标签: javascript css asp.net-mvc razor nopcommerce

小背景
我们一直在进行一些重组,以了解我们如何与nopCommerce合作以使事情更易于维护。以前,我们一直在使用主题系统来处理我们的视图,脚本,CSS和图像。但是,我们现在将所有这些移动到我们的主要插件,名为" Nop.Plugin.Wca.WE",这就是我遇到一个非常奇怪的问题。

我的问题
我已将所有内容移动并更新所有引用,路径等,以便事情应该正常工作,但这只是部分情况。我的控制器能够很好地返回视图,但是视图不能添加任何CSS或JavaScript文件,因为它们表示它们无法找到(404)"在浏览器的检查员中。我保留了与#34; Themes"中使用的完全相同的语法。文件夹(它工作的地方),我只改变了路径:

Html.AppendCssFileParts("~/Plugins/Nop.Plugin.Wca.WE/Contents/css/ProductDetails/styles.css");

Html.AppendScriptParts("~/Plugins/Nop.Plugin.Wca.WE/Scripts/ProductDetails/ProductDetailsTooltips.js");

错误讯息:

http://localhost:15636/Plugins/Nop.Plugin.Wca.WE/Contents/css/ProductDetails/styles.css Failed to load resource: the server responded with a status of 404 (Not Found)

http://localhost:15636/Plugins/Nop.Plugin.Wca.WE/Scripts/ProductDetails/ProductDetailsTooltips.js Failed to load resource: the server responded with a status of 404 (Not Found)

路径正确且文件存在
这会让你想到的第一件事就是"路径一定有问题"但是,情况并非如此,因为我在同一个文件中用以下代码验证了这一点:

@HttpRuntime.AppDomainAppPath

输出:
" D:\ TFS_Clean2 \ WCA B2B在线商店\ nopCommerce_B2B_3.80 \ Presentation \ Nop.Web \"

证明了根"〜/"实际上是在预期的Nop.Web中。

还有:

@File.Exists(@"D:\TFS_Clean2\WCA B2B Online Store\nopCommerce_B2B_3.80\Presentation\Nop.Web\Plugins\Nop.Plugin.Wca.WE\Scripts\ProductDetails\ProductDetailsTooltips.js")

输出" True",因此该文件确实存在于这个确切的位置。

我觉得还值得一提的是,此视图文件中还有许多其他调用使用相同的路径逻辑返回部分视图,这些调用都按预期工作,这是一个示例:

@Html.Partial("~/Plugins/Nop.Plugin.Wca.WE/Views/ProductDetails/_ProductPrice.cshtml", Model.ProductPrice)

我尝试过的事情
- 我尝试了不同的方法变体" AddCssFileParts()"," AddScriptParts()"等等。这些都没有产生影响。

- 文档中有一小部分显示如何添加使用一些不同语法的文件:http://docs.nopcommerce.com/display/nc/Adding+CSS+and+JS+resource+files+into+nopCommerce+Plugin
我试过没有改变行为。

- 我尝试过以某种方式改变路径,例如删除"〜/"并删除文件扩展名。

- 我刷新了浏览器的缓存。

这似乎应该是一个小问题,但我已经对它进行了几个小时的故障排除无济于事。希望这里有人可以为我阐明情况。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,插件的web.config文件中有一个阻止访问文件的设置:

<handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>

我认为这是为了限制对视图的访问,但由于它是在插件的配置文件中,我猜它也限制了其他文件,虽然奇怪的就像我在帖子中提到的那样,我是能够很好地访问视图,所以我不太清楚那里有什么。