在ASP.NET MVC2中访问文章名称

时间:2010-06-20 13:23:23

标签: asp.net-mvc-2

问候。如何通过姓名访问我的文章或帖子? 例如:在stackoverflow中可以通过名称访问此问题 access to article by article name in ASP.NET MVC2接入到物品按物品名称 - 在-ASP净MVC2

2 个答案:

答案 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并按名称指定路由。此外,订单也很重要。