【问题标题】:Custom routing, replace URL while maintaining parts of it自定义路由,替换 URL,同时保留部分 URL
【发布时间】:2020-04-13 14:35:06
【问题描述】:

我希望用另一部分替换 url 的一部分。例如

https://www.test.com/part1/a/b/chttps://www.test.com/part2/a/b/c

https://www.test.com/part1/part2/a/bhttps://www.test.com/part3/part4/a/b

我基本上希望能够对 url 的任何部分执行查找/替换。这将用于我的自定义路由处理程序中的大规模重定向。总体目标是通过管理页面进行设置以执行一些自定义路由。

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    你可以在属性路由的帮助下尝试这样的事情:

    [HttpGet]
        [Route("students/{studentID}/courses")]
        public ActionResult GetStudentCourses(int studentID)
        {
            List<string> Courses = new List<string>();
            if (studentID == 1)
                Courses = new List<string>() { "ASP.NET", "C#.NET", "SQL Server" };
            else if (studentID == 2)
                Courses  = new List<string>() { "ASP.NET MVC", "C#.NET", "ADO.NET" };
           };
            else
                Courses = new List<string>() { "Bootstrap", "jQuery", "Angular" };
            ViewBag.Courses = Courses ;
            return View();
        }
    

    这就是我们如何导航到 URL 示例 https://www.test.com/students/2/courses

    如果您想从根目录 (site.com/{slug}) 获取永久链接,请尝试这些链接 Link-1 Link-2 如果您尝试更改链接中的部分 URL,请尝试此Link

    【讨论】:

    • 所以你用正则表达式搞定了,好的
    【解决方案2】:

    我用正则表达式匹配然后替换。

    一个例子

    https://www.test.com/test-text/a/b/c

    https://www.text.com/new-text/b/c

    当前重定向的正则表达式 测试文本/a(?s)(.*$)

    替换 新文本$1

    【讨论】:

      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多