繁体   English   中英

ASP.NET MVC 路由系统

[英]ASP.NET MVC Routing System

我试图了解 MVC 路由是如何工作的,但似乎我在此过程中迷路了。

我在Global.asax文件中定义了两条路由如下

routes.MapRoute("Public", "Public/{controller}/{action}", new { controller = "Home", action = "Index" }); 
routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" });

我的问题——这可能很简单:

  1. 当我输入"~/Public/Account/Register" ,它会通过Register操作转到Account控制器。 为什么第一段(公共)不作为控制器的值?
  2. 当我输入"~/Shop/OldAction" ,它会通过Index操作转到Home控制器。 请描述。
  3. 路由系统是否默认将第一段作为控制器,第二段作为动作?
  4. 路由系统是否将我们在 URL 模式中的{}中提到的任何内容作为段变量。

您已将“公共”作为固定短语放在下面的代码中:

Public/{controller}/{action}"

通常那里没有“公共”。 如果你想让公共动态,你必须把它放在 {public} 之类的括号中,并在以下代码中为“公共”添加功能:

{ controller = "Home", action = "Index" });    
{ controller = "Home", action = "Index", public="None" });

在第二行中,您将一个名为“Public”的变量传递给 actionresult,默认情况下它带有一个字符串值“None”,并且可以根据您替换 public 的内容进行更改。

再说一次,在控制器变量之前放置任何变量并不常见。

{ } 中的任何内容都作为一个变量,它采用默认值,可以根据用户输入的地址进行更改。

routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" });

上面的代码默认转到主页/索引。 你没有在那里设置任何变量。

我希望这能回答所有 3 个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM