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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 用于Javascript文件的MVC Route to Action前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试添加一个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谓词选择性地启用此功能.

原文链接:https://www.f2er.com/aspnet/249170.html

猜你在找的asp.Net相关文章