ASP.NETMVC2路由中的硬代码URL

ASP.NETMVC2路由中的硬代码URL,asp.net,Asp.net,这是创建项目时提供的默认管线- routes.MapRoute(“默认值”、“{controller}/{action}/{id}”、新的{controller=“Home”、action=“Index”、id=UrlParameter.Optional}) 但是,在这里,只有当您键入“关于”页面时才会显示 我想在用户键入时显示“关于”页面 如果不写一个名为About的控制器,我怎么做呢 这不起作用: routes.MapRoute(“About”,“About”,new{controller=

这是创建项目时提供的默认管线-

routes.MapRoute(“默认值”、“{controller}/{action}/{id}”、新的{controller=“Home”、action=“Index”、id=UrlParameter.Optional})

但是,在这里,只有当您键入“关于”页面时才会显示

我想在用户键入时显示“关于”页面

如果不写一个名为About的控制器,我怎么做呢

这不起作用:

routes.MapRoute(“About”,“About”,new{controller=“Home”,action=“About”,id=urlparmeter.Optional})

如何修改它,以便在请求/About时显示About页面?

尝试在其他路线之前添加此选项:

routes.MapRoute(
            "Home", // Route name
            "{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
请记住,{controller}/{action}/{id}将尝试匹配url的非域部分。因此,您需要尝试将您想要的url与路由匹配

您有以下url:

www.mydomain.com/About
您知道控制器必须是“Home”,操作必须是“About”。因此,您可以使用以下方式匹配您的路线:

www.mydomain.com/{action}
但是,域部分将需要删除,因此您最终会

{action}
然后需要设置默认路由值,如上面的示例所示。现在,如果我们转到域,我们将被路由到“主”控制器和“关于”操作。如果我们访问www.mydomain.com/HelloWorld,我们将被路由到“主”控制器和“HelloWorld”操作。我们可以添加一个可选的“id”参数,如下所示:

{action}/{id}
但我们需要确保将默认id设置为UrlParameter.Optional

希望这有帮助!:)

编辑:

如果要将url硬编码为特定路由,可以将默认路由参数设置为所需的路由,然后只使用url的非域部分作为路由捕获


因此,您将使用“OldSite/MyOldPage.aspx”代替“{controller}/{action}/{id}”,我对条目进行了重要的更新。路由名称必须唯一,否则将出现错误。+1。。我对自己说。我完全忘记了在默认设置之前添加它:|