asp.net-mvc-3 – ASP.NET MVC 3控制器路由 – 使家庭控制器下的一切显示在域下

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – ASP.NET MVC 3控制器路由 – 使家庭控制器下的一切显示在域下前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前,家庭控制器下的所有内容显示在URL中
example.com/Home/{Action}

有没有办法,我们可以保持所有其他路由的方式,但只有特殊情况的家庭控制器,所以家中的一切都在域下。

喜欢

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

而不是为他们每个创建新的控制器类。

编辑:

另一个URL就像

example.com/user/details/123
example.com/user/edit/123

userController中的哪些应该像现在一样工作

解决方法

我觉得最好的办法是:
routes.MapRoute("home","home",new { controller = "Home",action = "Index" });
 routes.MapRoute("about","about",action = "About" });
 routes.MapRoute("contact","contact",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",new{/* route values */},new {/* html attribues */})

要么:

@Html.RouteLink("Home","home")

代替:

@Html.ActionLink("Home","Index","Home",new {/* html attribues */})

这对我有用,也应该为你工作。

UPDATE:

您可以在url中的action部分之前创建一个像@(或 – 或其他任何东西)的符号,以使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",id = UrlParameter.Optional } // Parameter defaults
     );

以这种方式,您的网址与默认地图路线不同,您可以创建如下URL:

site.com/@Home
site.com/@About
site.com/@Contact

但是,在我的想法中,第一个是更好的,我总是使用它。

猜你在找的asp.Net相关文章