【问题标题】:In ASP.NET MVC, how can I load script from my view folder?在 ASP.NET MVC 中,如何从我的视图文件夹中加载脚本?
【发布时间】:2009-10-14 13:23:26
【问题描述】:

我已将 View 的一些 javascript 重构为视图旁边的 .js 文件(不在根目录下的 Scripts 文件夹中)。

默认情况下,web.config 中视图的处理程序会停止加载这些视图:

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

但是,我想覆盖它以允许浏览器从该位置请求 .js 文件。

有人知道我该怎么做吗?

谢谢, 标记。

【问题讨论】:

  • 为什么不按照惯例使用脚本文件夹?毕竟,javascript 不是视图。

标签: asp.net-mvc web-config


【解决方案1】:

我想我会将脚本留在脚本位置,但如果您想移动它们,您可以执行以下操作:

在视图下的 web.config 文件顶部查找

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

并将其替换为以下内容:

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

您需要添加要阻止的每种文件类型的扩展名。

【讨论】:

  • 谢谢。是的,我希望避免这种情况……可惜没有 'exclude="*.js"' 约定来帮助我。
【解决方案2】:

您可以将路径属性更改为比“*”(所有内容)更全面的内容,但您为什么要与框架的约定作斗争? Views 文件夹旨在(仅)组织视图文件,并且特别意味着可以从外部直接访问。您是否有某些原因不能将这些脚本文件放在应用程序的其他位置?

【讨论】:

  • 谢谢,但是,我的视图的客户端脚本我的视图的一部分,仅仅因为我想将它重构到单独的文件中并不意味着它需要住在其他地方海事组织。不时与一些讨厌的约定搏斗没有错。
  • 嘿,当然,这是你的项目。似乎可以为其中的所有其他 Web 资产提出相同的论点:其他脚本、图像、CSS ……。您将一直与框架作斗争。但你可以做到。
猜你喜欢
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 2010-11-18
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多