0

我需要创建一条路线,用户可以在其中打开特定页面,例如

http://www.mywebsite.com/profilename

输入此内容后,应显示将显示具有正确信息的配置文件的页面。基本上像脸书。

我需要创建的路线是什么。我这样做了,但是当例如有人键入http://www.mywebsite.com/users时会出现一个重定向循环,例如显示用户列表

        routes.MapRoute(
        name: "HomeIndexWithParam",
        url: "{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
4

1 回答 1

0

您将需要创建几条路线才能使其正常工作。使用路线时,请记住顺序很重要,因此首先放置最具体的路线。

首先,您将为预定的控制器创建路由。这些路线始终相同。在这种情况下,“用户”路线:

routes.MapRoute(
    name: "Users",
        url: "users",
        defaults: new { controller = "Users", action = "Index" });

然后,您将遵循负责用户配置文件的路线:

routes.MapRoute(
        name: "UserProfile",
        url: "{username}",
        defaults: new { controller = "User", action = "Profile" });

我建议如果“用户名”遵循预定模式(用户名介于 4 到 16 个字符之间,只允许数字和文本等),则添加一个约束,以便它仅在满足约束时执行

在用户控制器的 Profile 操作方法中,您将获取用户名,如果找到用户名,则返回用户个人资料页面的视图。否则将用户重定向到主页。

最后,您将拥有默认路由:

routes.MapRoute(
        name: "Home",
        url: "",
        defaults: new { controller = "Home", action = "Index" });

希望这是有道理的。

于 2013-01-29T18:49:21.323 回答