加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 用于Javascript文件的MVC Route to Action

发布时间:2020-12-15 22:26:53 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试添加一个mvc路由来从控制器生成一个 javascript.我添加了以下路由,但它不起作用: routes.MapRouteWithName( "DataSourceJS",// Route name "Scripts/Entities/{controller}/datasource.js",// URL with parameters new { controller = "Home",act
我正在尝试添加一个mvc路由来从控制器生成一个 javascript.我添加了以下路由,但它不起作用:
routes.MapRouteWithName(
           "DataSourceJS",// Route name
           "Scripts/Entities/{controller}/datasource.js",// URL with parameters
           new { controller = "Home",action = "DataSourceJS"} // Parameter defaults,null
           );

但是,如果我将路由更改为没有“.js”,并导航到“Scripts / Entities / {controller} / datasource”,它就可以工作.但是我需要在那里有.js文件扩展名,我该如何使用呢?

解决方法

how do I make this work?

IIS拦截请求,因为它包含文件扩展名并且劫持它认为它是静态文件而不将其传递给您的应用程序.

为了使它工作,你应该告诉IIS不要这样做.在< system.webServer>内您可以添加以下处理程序以指示具有指定模式的请求应由托管管道处理:

<system.webServer>
    <handlers>
        ...
        <add name="ScriptsHandler" path="Scripts/Entities/*/datasource.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

有些人也可能会告诉你使用:

<modules runAllManagedModulesForAllRequests="true" />

但我不建议您这样做,因为这意味着所有对静态资源的请求现在都将流经托管管道,这可能会对您的应用程序产生负面的性能开销.处理程序语法允许您仅针对某些路由模式和HTTP谓词选择性地启用此功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读