0

我在创建一个使用ASP.NET Core别名的路由系统。如何拥有路由别名?

在我的数据库中,我有我的所有路线与相应的别名,当用户请求服务器我的应用程序寻找与别名相对应的路线。

现在,我想使用恢复的路线访问正确的控制器和正确的操作。

一个例子会比长篇大论更明确的(我想要做的就是在括号中):

的用户连接到myapp.com/hello/i/am/an/alias - >该应用程序找到相应的路由是/ myController的/指数( - >应用程序使用myController的发送索引视图给用户)

如果有人知道该怎么做,我拿:d感谢

编辑:其实,编辑HttpContext越好,但我不认为这是可能的

回答

0

确定的配置方法运行这样的事情,我找到了答案!

有可能在这样的背景下,以编辑路径: context.Request.Path = new PathString(newPath);

所以我用一个MapWhen总是返回true和编辑与数据库的响应和mapHandler只是调用应用程序的context.Request.Path .UseMvc:

private void HandleMap(IApplicationBuilder app) 
    { 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
    } 

app.MapWhen(context => { 
      string newPath = findNewPath(); 

      context.Request.Path = new PathString(newPath); 

      return true; 
     }, HandleMap); 
0

我想你会想在Startup.cs

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "path1", 
     template: "hello/i/am/an/alias", 
     defaults: {controller="MyController", action="Index"}); 

    routes.MapRoute(
     name: "path2", 
     template: "i/am/another/alias", 
     defaults: {controller="MyOtherController", action="Index"}); 

    // etc. 
}); 
+0

我怀疑他想它的动态,并从数据库中,就像在CMS系统中使用的蛞蝓(https://en.wikipedia.org/wiki/Semantic_URL#Slug),这将需要重建路线表每次一个新的slu gets在运行时创建,这是不建议的 – Tseng

+0

是的Tseng,它的东西 像那样 – LeCintas