asp.net-mvc-4 - MVC4 路由映射 JavaScript 文件到 Controller

标签 asp.net-mvc-4 routes

这是我尝试做的一个例子。

提供从 test.js 到 Controller 操作的 MVC 路由,例如

> http://localhost/MVCScripts/test.js?id=123

到 Controller

> http://localhost/Home/RenderJavascript?id=123

这背后的原因是根据 id 生成从服务器呈现的动态 js 文件。 JS 文件将通过嵌入到其他网站进行链接。

我已尝试设置 web.config 以排除有问题的脚本文件夹:

<handlers>
     <add name="scripts" path="/MVCScripts/*" verb="GET" type="System.Web.Handlers.TransferRequestHandler" />
</handlers>

然后添加一条路由,例如:

routes.MapRoute(
            name: "EmbedCode",
            url: "MVCScripts/test.js",
            defaults: new { controller = "Home", action = "RenderJavascript", id = UrlParameter.Optional }
        );

调用时

> http://localhost/MVCScripts/test.js?id=123

我刚刚明白

The controller for path '/MVCScripts/test.js' was not found or does not implement IController.

请注意,我的目标是使用 MVC 路由。谢谢

最佳答案

如果您在 IIS 集成管道模式下运行,请确保将以下处理程序添加到 <handlers>收藏你的<system.webServer>节点:

<system.webServer>
    <handlers>
        ...
        <add name="DynamicScript" path="MVCScripts/test.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
   </handlers>
</system.webServer>

这将确保静态 .js扩展名将通过托管的 ASP.NET 管道进行路由,而不是直接由 IIS 作为静态文件提供服务(显然在您的案例中找不到)。当它通过 ASP.NET 管道提供服务时,它显然会到达您必须在默认路线之前定义的路线:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "EmbedCode",
        url: "MVCScripts/test.js",
        defaults: new { controller = "Home", action = "RenderJavascript", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

关于asp.net-mvc-4 - MVC4 路由映射 JavaScript 文件到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19037709/

相关文章:

javascript - Knockoutjs 模板文件和本地化 resx 文件

ruby-on-rails - 使用 Rails link_to 调用自定义操作而不重新渲染页面

ruby-on-rails - 限制资源路由并在 Rails 3 中添加额外的非 RESTful 路由

ruby-on-rails - 如何在 Ruby on Rails 3 中为每个用户连续编号项目?

asp.net-mvc - Entity Framework 5 迁移 : Setting up an initial migration and single seed of the database

javascript - 重定向 View 在 MVC 应用程序中不显示 "active"属性

c# - LabelFor 没有按预期工作

entity-framework - Entity Framework EntityType 'UserAccount' 没有定义键

Go url 参数映射

linux - 将流量从 WIndows 路由到 Linux(Kali)