【问题标题】:MVC - Accessing css, image, js files in view folderMVC - 访问视图文件夹中的 css、图像、js 文件
【发布时间】:2012-03-17 03:24:51
【问题描述】:

在我的 mvc 3 应用程序中,假设我有一个像 \Views\Account\js\custom.js 这样的文件夹结构,请问如何将该文件添加到我在 Account\index.cshtml 的视图中?

我试过了:

<script src="js/custom.js" type="text/javascript"></script>
<script src="/views/account/js/custom.js" type="text/javascript"></script>
<script src="~views/account/js/custom.js" type="text/javascript"></script>

但似乎没有任何效果,萤火虫总是说在与我指定的地方完全不同的地方找不到 404 文件。 (有时它会在路径中添加额外的视图:-s)

我知道我可以将它放在我自己的文件夹中的视图之外并像/myFolder/myfile.js 一样访问它,它会工作,但是这个 javascript 文件与帐户视图中发生的事情非常密切相关,没有别的,所以它会让感觉把它放在那里..

谢谢。

【问题讨论】:

    标签: asp.net-mvc model-view-controller


    【解决方案1】:

    /Views 文件夹中的web.config 文件默认限制所有对该文件夹中文件的访问:

    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>
    

    您可以更改它,但总体而言,不将资产存储在视图文件夹中可能更安全。

    【讨论】:

    • hm... 是的,修改 web.config 的特定行为似乎是一件愚蠢的事情。我将把这个 js 文件和我的其余 js 文件放在一起。非常感谢.
    • 请参阅stackoverflow.com/questions/604883/…,了解如何明确允许仅从 Views 文件夹提供 js 文件的示例。
    【解决方案2】:

    您可以使用UrlHelper

    <script src="@Url.Content("~/view/account/js/custom.js")" type="text/javascript"></script>
    

    【讨论】:

    • 嗨,我试了一下,但它仍然显示为 404 .. 我试图查看视图源上的已解决路径,它看起来正确.. 所以可能是 pjumble's answer 是正确:(
    【解决方案3】:

    最好的方法是使用 T4MVC - http://mvccontrib.codeplex.com/wikipage?title=T4MVC 无需使用魔术字符串...

    【讨论】:

    • 是的,我已经有了,但问题是我的 js 文件不在 scriptscontent 文件夹中,而是在视图文件夹本身中,对我来说什么都没有获取该文件。
    • 您可以更改 T4MVC 附带的 T4 设置文件以包含除 Scripts 和 Content 以外的文件夹。
    • 我明白了.. 但即便如此,正如pjumbl's answer.. 中提到的那样,它仍然无法访问!不过谢谢。
    【解决方案4】:

    在您的视图 web.config 处理程序部分下添加它

    <add name="JavaScriptHandler" path="*.js" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-03
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多