c# - MVC3 maproute 不显示操作?

标签 c# asp.net .net asp.net-mvc-3 maproute

如果我有以下 MapRoute:

routes.MapRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

我可以有一个像这样的网址:

blabla.com/Home/Index/123

但是我需要创建什么样的 MapRoute 才能做到这一点:

blabla.com/Home/123还是blabla.com/Home/DEADBEEF

我想这涉及到一些类似的事情 “{controller}/{id}/{action}”

Action 和 id 颠倒了,也许应该有一个默认的 Action。但是 MapRoute 如何知道应该这样对待哪个 Controller 呢?

最佳答案

您可能需要类似的东西。

  routes.MapRoute(
      name: "DefaultRoute",
      url: "Home/{action}",
      defaults: new { controller = "Home", action = "Index" },
      constraints: new { action = "[A-Za-z]*" }
  );

或者不执行任何操作

  routes.MapRoute(
      name: "DefaultRoute",
      url: "Home/{id}",
      defaults: new { controller = "Home", action = "Index", id = "" },
      constraints: new { id = "[A-Za-z]*" }
  );

您需要确保路线名称与您设置的任何其他路线不同,并注意路线的顺序,因为其他相似的路线可能会相互覆盖。在这种情况下,请确保您可能希望在默认路由之前使用它,但请注意它会覆盖它。

对于没有 Controller 甚至操作的情况,您可以设置默认值,并且在路由中不需要它们。

对于约束,您只需将约束参数添加到路由中即可为某个属性设置正则表达式,如上所示。

编辑: 如果您需要的话,这里有一些有用的链接,可以获取有关路由的更多信息。

关于c# - MVC3 maproute 不显示操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356383/

相关文章:

c# - 在多个 XML 文件中搜索字符串

c# - 从 .NET Core 中的模型创建数据库表

c# - 如何防止 ASP.NET 中的浏览器超时?

c# - 解释这个 : CheckBox checkbox = (CheckBox)sender;

c# - 在 C# 中生成位图 - 已弃用?

c# - 为什么两个整数之间的除法结果会被截断?

c# - 是否出于与 Try-Catch 相同的原因而谨慎使用 Try-Finally?

c# - C# 中的大型 xml 到 csv

c# - 在 .NET(非 MVC)中访问数据的最佳实践

c# - Convert.ToString 方法和 Object.ToString() 在全局化方面的区别