我在MVC路由中有一些问题。我试图了解如何 MVC路由工作,但似乎我迷路了。你的帮助, 非常感谢。
我在Global.asax中定义了两条路线,如下所示。
routes.MapRoute(“Public”,“Public / {controller} / {action}”,new {controller =“Home”,action =“Index”});
routes.MapRoute(“ShopSchema2”,“Shop / OldAction”,新{controller =“Home”,action =“Index”});
我的问题是(这可能很简单,但我很困惑)
1)当我输入“〜/ Public / Account / Register”时,它会转到Account controller和Register action。为什么第一段(公共)不被视为控制器的值?
2)当我输入“〜/ Shop / OldAction”时,它会转到Home controller和Index action。请描述。
3)路由系统默认将第一段作为控制器而第二段作为动作吗?
4)路由系统是否将我们在网址模式中{和}内提到的任何内容作为分段变量进行处理?
更新:请分享您对此事的了解。非常需要。
感谢
答案 0 :(得分:0)
您已将“公开”作为固定短语放在下面的代码中:
Public/{controller}/{action}"
通常那里没有“公共”。如果你想公开动态,你必须把它放在像{public}这样的括号中,并在下面的代码中为“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个问题