ASP.NET MVC路由系统

问题描述 投票:0回答:2

我在MVC路由中有一些问题。我试图了解如何MVC路由有效,但似乎让我迷路了。您的帮助,非常感谢。

我在Global.asax中定义了以下两条路线route.MapRoute(“ Public”,“ Public / {controller} / {action}”,new {controller =“ Home”,action =“ Index”});route.MapRoute(“ ShopSchema2”,“ Shop / OldAction”,新{控制器=“主页”,操作=“索引”});

我的问题是(这些可能很简单,但我很困惑)1)当我输入“〜/ Public / Account / Register”时,它将转到“帐户控制器和注册”操作。为什么第一段(公共)不作为控制器的值?2)当我输入“〜/ Shop / OldAction”时,它会转到Home控制器和Index动作。请进行描述。3)路由系统默认是否将第一段作为控制器,第二段作为动作?4)路由系统是否将我们在url模式中在{和}中提到的任何内容用作段变量?更新:请分享您对此事的知识。非常需要。谢谢

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 routes asp.net-mvc-routing
2个回答
0
投票

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

Public/{controller}/{action}"

通常,那里没有“公共”。如果要使公共动态,则必须将其放在{public}之类的括号中,并在以下代码中为“ 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个问题


0
投票

Routing System通常用于MVC。但是,它被设计为与标准ASP.NET项目或WebForms一起使用。这是将路由系统组装件放置在系统中的主要原因。 Web,而不是严格在System.Web.MVC中。首次创建时,要添加到您的MVC项目中的程序集名称称为System.Web.Routing。但是,系统。网络足以使路由系统与您的project一起使用。

public static void RegisterRoutes(RouteCollection routes)

        {

            Route myRoute = new Route("{controller}/{action}", new MvcRouteHandler());

            routes.Add("MyRoute", myRoute);
        }

实际上,路由器是在Global.asax.cs文件中设置的,而不仅仅是在Global.asax中设置的。但是,通常将路由器视为Global.asax文件的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.