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

Nopcommerce Plugin View: CSS and JavaScript Files Not Found (404)

本文关键字:文件 JavaScript 视图 插件 CSS Nopcommerce      更新时间:2023-09-26

小背景
我们一直在对如何与nopCommerce合作进行一些重组,以使其更易于维护。以前,我们一直使用主题系统来处理视图、脚本、css和图像。然而,我们现在要把所有这些都转移到我们的主插件"Nop.Plugin.Wca"上。"WE",这就是我遇到的一个非常奇怪的问题。

我的问题
我已经移动了所有的东西,并更新了所有的引用,路径等,所以事情应该工作得很好,但这只是部分情况。我的控制器能够很好地返回视图,但是视图不能添加任何CSS或JavaScript文件,因为它说它们在浏览器的检查器中"找不到(404)"。我保持了与我在"主题"文件夹(工作的地方)中使用的完全相同的语法,我只更改了路径:

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 Online Store'nopCommerce_B2B_3.80'Presentation'Nop. 0 "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)

What I've try
-我尝试了不同的方法变化"AddCssFileParts()","AddScriptParts()"等。

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

-我已经尝试过以一些小的方式改变路径,例如删除"~/"和删除文件扩展名。

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

这似乎应该是一个小问题,但我已经排除了几个小时,没有任何效果。希望这里有人能给我一些启示。

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

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

我相信这是为了限制访问视图,但因为它是在插件的配置文件,我猜它是限制其他文件,虽然奇怪的是像我在我的帖子中提到的,我能够访问视图只是很好,所以我不太确定发生了什么。