gpt4 book ai didi

asp.net-mvc - 带有 ASP.NET MVC MapPageRoute 的通配符以支持组织遗留代码

转载 作者:行者123 更新时间:2023-12-01 04:17:11 26 4
gpt4 key购买 nike

我正在将现有的 ASP.NET 网站迁移到 MVC 项目中。有几个(60+)页我还不想重写,所以我想知道是否有一种方法可以:

  • 将现有的 .aspx 页面(标记和代码隐藏文件)移动到我的 MVC 结构中的“Legacy”文件夹中
  • 设置路由,以便调用/foo.aspx(不带 'legacy')实际上会调用 ~/Legacy/foo.aspx

  • 实际上,我不希望 URL 中有“旧版”,但我也不希望 MVC 解决方案充满旧版 .aspx 页面。我接受这是一个非常小的问题,我只是好奇它是否可以通过路由来完成。

    我意识到我可以做到:
    routes.MapPageRoute("legacy-foo", "Foo.aspx", "~/Legacy/Foo.aspx"); 

    但我想知道是否有办法动态地做到这一点(使用 MVC 路由)?例如:
    routes.MapPageRoute("legacyroutes", "{filename}.aspx", "~/Legacy/{filename}.aspx"); 

    我想一种方法是使用 URL 重写器模块,但如果路由能够本地执行此操作,这似乎有点多余。

    最佳答案

    我使用返回文件内容的 Controller 解决了这个问题。这不是一个完美而快速的解决方案,但它确实有效。

    routes.MapRoute(
    "legacyroutes",
    "{filename}.aspx",
    new { controller = "Home", action = "RedirectFile"}
    );

    和 Controller :
    public class HomeController : Controller
    {
    public ActionResult RedirectFile(string filename)
    {
    string url = Url.Content("~/Legacy/"+filename+".aspx");
    Redirect(url); // or other code to process the file
    }
    }

    此处的详细信息和其他示例: http://maxivak.com/dynamic-url-rewriting-on-asp-net-mvc/

    关于asp.net-mvc - 带有 ASP.NET MVC MapPageRoute 的通配符以支持组织遗留代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348360/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com