доступ к статье по названию статьи в ASP.NET MVC2 - PullRequest
0 голосов
/ 20 июня 2010

Привет. Как я могу получить доступ к своей статье или посту по имени? Например: Вроде у stackoverflow есть доступ к этому вопросу по имени доступ к статье по имени статьи в ASP.NET MVC2 доступ к статье по названию статьи в asp-net-mvc2

Ответы [ 2 ]

0 голосов
/ 20 июня 2010

Создать маршрут, который позволяет указывать имя как часть URL. Обратите внимание, что он, вероятно, фактически не используется при разрешении статьи, поскольку он может быть не уникальным. Идентификатор - это бит информации, который фактически используется для поиска и отображения правильной статьи, но имя является частью 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 и указать маршрут по имени. Кроме того, порядок имеет значение.

0 голосов
/ 20 июня 2010

В StackOverflow часть name полностью игнорируется. Это идентификатор, который важен. Это работает: доступ к статье по названию статьи в ASP.NET MVC2 и ссылки на этот вопрос. Чтобы создать ссылки, содержащие name в URL, вы можете определить следующий маршрут:

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 }) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...