У меня есть приложение для ведения блогов, и пользователи могут создавать сообщения, я использовал фреймворк Entity для создания модели из базы данных. В сообщениях у меня есть запись для UrlSlug
.отображать url slug вместо id в mvc
Однако, когда я проверить детали пост:
Контроллер:
public ActionResult Details(int id = 0)
{
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
Он возвращает URL с id
в конце: http://localhost:52202/Post/Details/1
Я попытался возвращающегося пост. UrlSlug (выдает ошибку), а также меняет мой файл RouteConfig.cs для использования urlslug
вместо id
(который отображает urlslug, но он не может на странице из-за контроллера). Как я могу изменить это, так отображается urlslug вместо Post Table Id
?
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Вид:
@for (int i = 0; i < Model.Count(); i += 3)
{
<div class="row">
@foreach (var item in Model.Skip(i).Take(3))
{
<div class="col-md-4 portfolio-item">
<a href="@Url.Action("Details", "Post", new { id = item.Id })">
<img class="img-responsive" src="http://placehold.it/700x400" alt="">
</a>
<h3>
<a href="@Url.Action("Details", "Post", new { id = item.Id })">@Html.DisplayFor(modelItem => item.Title)</a>
</h3>
<p>@Html.DisplayFor(modelItem => item.ShortDescription)</p>
</div>
}
</div>
}
@Html.PagedListPager(Model, page => Url.Action("Index", new { page, pageSize = Model.PageSize }))
Редактировать
Вопрос я заметил на этой линии:
public ActionResult Details(string urlslug)
{
Post post = db.Posts.Find(urlslug); //find only finds an eitity with a given primary key, how can I change this to find the string urlslug
возможный дубликат [ASP. NET MVC: маршрутизация пользовательских слизней без влияния на производительность] (http://stackoverflow.com/questions/11494184/asp-net-mvc-routing-custom-slugs-without-affecting-performance) –
проверить этот ответ http: // stackoverflow .com/a/11496379/2907017 –