我注册了两条路线:
//News page routing with optional news article ID
routes.MapRoute(
name: "News",
url: "news/{id}",
defaults: new { controller = "News", action = "Index", id = UrlParameter.Optional }
);
将默认链接(无ID)生成为:@Html.ActionLink("News", "Index", "News")
和
//User page routing with User ID
routes.MapRoute(
name: "Profile",
url: "{id}/{controller}/{action}",
defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
将链接生成为:
[a href="@Url.Action("Index", "Account", new RouteValueDictionary(new { id = "test-user-id" }))"]Me[/a]
到目前为止一切顺利,我的新闻链接创建为域/新闻和工作,而我链接创建为域/测试用户ID并且也可以。
但是一旦我访问Me链接,新闻链接就变成了domain / news / test-user-id,这不是我想要的。如何使用mvc routing“分隔”新闻ID和用户ID?
答案 0 :(得分:0)
在新闻链接中,您的网址首先是控制器,然后是操作。
您应该在Me链接中遵循相同的模式。即
{控制器} / {行动} / {ID}
答案 1 :(得分:0)
我不太确定为什么会这样,但我对路由提出了一些建议。首先,对于用户路由,请删除UrlParameter.Optional
,因为它实际上不是可选的。另外,请从网址模板中删除{controller}
和{action}
,因为它们不是必需的。
//User page routing with User ID
routes.MapRoute(
name: "Profile",
url: "{id}",
defaults: new { controller = "Account", action = "Index" }
);
其次,使用@Url.RouteUrl
代替@Url.Action
作为个人资料链接,因为这更准确地定位了路由规则。
新闻强>:
@Html.RouteLink("News", "News")
配置文件强>:
@Url.RouteUrl("Profile", new { id = "test-user-id" })