ASP.NET MVC路由系统

我在MVC路由中遇到了一些问题。 我想了解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”时,它会进入账户控制器和注册操作。 为什么第一部分(公共)不被视为控制器的价值?

2)当我输入“〜/ Shop / OldAction它会进入主控制器和索引操作,请描述。

3)路由系统是否将第一段作为控制器,第二段作为缺省动作?

4)路由系统是否将我们在{和}中以url模式提​​到的任何内容作为段变量?


更新:请分享你在这个问题上的知识。 很需要。

谢谢


您已将“公开”作为以下代码中的固定短语:

Public/{controller}/{action}"

通常在那里没有“公共”。 如果您想公开动态,则必须将其放在{public}括号中,并在以下代码中添加“公共”功能:

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

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

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

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

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

上面的代码默认转到home / index。 你没有在那里设置任何变量。

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

链接地址: http://www.djcxy.com/p/36759.html

上一篇: ASP.NET MVC Routing System

下一篇: area route problems (alongside areas)