c# - MVC——默认 Controller

标签 c# asp.net-mvc

我正在创建一个站点,我想在其中动态添加页面。因此,我希望有一个更简单的 URL。我的目标是像下面这样的 URL:

http://www.mysite.com/my-page-url

而不是像下面这样的 URL:

http://www.mysite.com/pageController/my-page-url

MVC URL 往往像这样工作:|url|/|controller|/|action|/|params|

我想做的是:|url|/|params|

对于上面的 URL,如果参数的值不等于 Controller 的名称,那么我想将这些参数传递给 PageContoller.ProcessDynamicPage。

最佳答案

根据您的默认参数,您可以创建一个 route constraint

    routes.MapRoute(
        "Default",
        "{Param1}",
        new { controller = "ProcessDynamicPage", action = "YourAction" },
        new {Param1= @"\d+" }
    );

如果您的参数是整数,这将起作用。

如果您的默认参数是字符串或其他内容,并且您无法创建正则表达式或无法实现 IRouteConstraint 的内容,您最好的选择是为您的每个 Controller 创建一个匹配的操作当它落入默认值时,您已经尝试进行匹配。

routes.MapRoute(
    "YourController",
    "YourController\{Param1}",
    new { controller = "YourController", action = "YourAction" }
   }
);

routes.MapRoute(
    "YourController2",
    "YourController2\{Param1}",
    new { controller = "YourController2", action = "YourAction" }
     }
);

routes.MapRoute(
    "Default",
    "{Param1}",
    new { controller = "ProcessDynamicPage", action = "YourAction" }          
);

如果您有很多 Controller ,您可能真的应该研究如何根据您的期望创建约束。

关于c# - MVC——默认 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130277/

相关文章:

c# - Rhino.Mocks 和 ref 参数

C# VB.NET 转换

c# - DataGridView 列的某些单元格中的位图

javascript - 为什么并行运行 AJAX 查询比串行运行慢得多?

c# - 在 MVC 中显示数据库中的图像

asp.net-mvc - Jenkins - MSBuild Web Deploy 创建 zip 而不是部署

javascript - 如何忽略在 MVC View 中检测到的自引用循环?

javascript - ASP.Net Mvc Ajax 请求正在进行中

C# 多项选择测试

c# - 确定新日期是否为默认的 new DateTime()