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

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

发布时间:2020-12-16 09:33:28 所属栏目:asp.Net 来源:网络整理
导读:我正在努力将现有的ASP.NET网站迁移到MVC项目中.有几(60)页我还不想重写,所以我想知道我是否有办法: 将现有的.aspx页面(标记和代码隐藏文件)移动到我的MVC结构中的“Legacy”文件夹中 设置路由,这样调用/foo.aspx(没有’legacy’)实际上会调用?/ Legacy / f
我正在努力将现有的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重写器模块,但如果路由能够本地执行此操作,那似乎有点多余.

解决方法

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

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

和控制器:

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/

(编辑:李大同)

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

    推荐文章
      热点阅读