问候。如何通过姓名访问我的文章或帖子? 例如:在stackoverflow中可以通过名称访问此问题 access to article by article name in ASP.NET MVC2的接入到物品按物品名称 - 在-ASP净MVC2
答案 0 :(得分:0)
在StackOverflow上,name
部分被完全忽略。这是重要的身份。这有效:access to article by article name in ASP.NET MVC2和此问题的链接。要生成包含URL中name
的链接,您可以定义以下路由:
routes.MapRoute(
"NameIdRoute",
"{controller}/{action}/{id}/{name}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional, name = UrlParameter.Optional },
new { id = @"\d+" }
);
然后:
<%: Html.ActionLink("some text", "action", new { id = Model.Id, name = Model.Name }) %>
答案 1 :(得分:0)
创建一个允许将名称指定为url一部分的路由。请注意,它可能实际上并未用于解析文章,因为它可能不是唯一的。 id是实际用于查找和显示正确文章的信息,但名称是上下文URL的一部分。
routes.MapRoute(
"Question",
"{controller}/{id}/{name}",
new { controller = "questions", action = "show", id = UrlParameter.Optional, name = UrlParameter.Optional },
new { id = "[0-9]+" } // constraint to force id to be numeric
);
现在,当您使用Html.ActionLink()并将名称指定为参数时,路由将匹配并将名称作为url的组件而不是查询参数。
<%= Html.ActionLink( "questions", new { id = Model.ID, name = Model.NameForUrl } ) %>
请注意,如果您有多个可能匹配的路由,则可能需要使用RouteLink并按名称指定路由。此外,订单也很重要。