gpt4 book ai didi

asp.net-mvc-3 - ASP.NET MVC 3 Controller 路由 - 使主 Controller 下的所有内容都出现在域下

转载 作者:行者123 更新时间:2023-12-03 14:05:07 25 4
gpt4 key购买 nike

目前,homecontroller 下的所有内容在 URL 中显示为

example.com/Home/{Action}

有没有一种方法可以让所有其他路由保持原样,但只有特殊情况的家庭 Controller ,所以家庭下的所有东西都在域下。


example.com/about
example.com/contact
example.com/error

而不是为每个 Controller 创建新的 Controller 类。

编辑:

另一个网址就像
example.com/user/details/123
example.com/user/edit/123

userController 中的哪些应该和现在一样

最佳答案

我认为最好的方法是:

 routes.MapRoute("home", "home", new { controller = "Home", action = "Index" });
routes.MapRoute("about", "about", new { controller = "Home", action = "About" });
routes.MapRoute("contact", "contact", new { controller = "Home", action = "Contact" });

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

当您要创建链接时,请使用:
@Html.RouteLink("Home", "home", new{/* route values */}, new {/* html attribues */})

或者:
@Html.RouteLink("Home", "home")

代替:
@Html.ActionLink("Home", "Index", "Home", new{/* route values */}, new {/* html attribues */})

这对我有用,也应该对你有用。

UPDATE:



您可以创建像 @ 这样的符号(或 - 或其他任何东西),在 action 之前url中的一部分,使url唯一,例如:
routes.MapRoute(
"test", // route name
"@{action}", // url and parameters
new {controller = "MyHome", action = "Home"} // parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

这样,您的网址与默认 map 路由不同,您可以创建如下网址:
site.com/@Home
site.com/@About
site.com/@Contact

但在我看来,第一个更好,我总是使用它。

关于asp.net-mvc-3 - ASP.NET MVC 3 Controller 路由 - 使主 Controller 下的所有内容都出现在域下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com