【问题标题】:Routing issue with redirect重定向的路由问题
【发布时间】:2020-11-11 23:26:36
【问题描述】:

是否可以创建这种路线: "param1 / param2 / *"

  • * 的位置,param1 / param2 之后的所有内容,并且我想要一个默认值,它将始终重定向到 param1 / param2 /
Pseudocode:
 routes.MapRoute(
            name: "Default",
            url: "AppController/Index/*",
            defaults: new { controller = "AppController", action = "Index" }
        );

示例: AppController / Index / test / qwe / 123 -> 希望它被重定向到AppController / Index

这也可以在 RouteConfig 中解决,还是应该是 web.config 中的一些规则? 或者也欢迎其他解决方案:)

【问题讨论】:

  • 当您说重定向时,您是指 302 吗?
  • @mjwills 不需要加载 AppController/Index/test/qwe/123 这样的路由,在 AppController/Index 下还有另一个 app(angular),它有自己的路由器。因此,通过 MVC,我需要始终将 * 路由重定向到 AppController/Index。
  • @mjwills 你说的 302 是什么意思?
  • google.com/search?q=what+is+a+302+redirect 你一直说redirect,但你不知道什么是302。这让我觉得你希望它路由而不是重定向
  • @mjwills 302 只是状态,我不明白您为什么要谈论它。再次简单的流程 - 用户有一个链接,AppController/Index/test/qwe/123 我希望 MVC 引擎不会加载这样的路由并立即将用户重定向到 AppController/Index

标签: c# asp.net asp.net-mvc routes


【解决方案1】:

网址:“AppController/Index/{.*}”,

{.*} 简单的正则表达式解决了我的问题。

【讨论】:

    【解决方案2】:

    你可以在方法中做到这一点

    ...
    [HttpGet("{id}")]
    public void test(string id)
    {
        return Ok(id);
    }
    

    uri: 本地主机:{port}/api/test/{id}

    【讨论】:

    • 我不需要这个可选参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多