gpt4 book ai didi

c# - 在 mvc 中显示 url slug 而不是 id

转载 作者:行者123 更新时间:2023-11-30 20:44:10 24 4
gpt4 key购买 nike

我有一个博客应用程序,用户可以创建帖子,我使用 Entity Framework 从数据库创建模型。在帖子中,我有一个 UrlSlug 条目。

但是,当我检查帖子的详细信息时:

Controller :

    public ActionResult Details(int id = 0)
{
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}

它返回一个以 id 结尾的 url:http://localhost:52202/Post/Details/1

我已尝试返回 post.UrlSlug(抛出错误)以及更改我的 RouteConfig.cs 文件以使用 urlslug 而不是 id(显示 urlslug,但由于 Controller 而无法找到该页面)。我怎样才能更改它以便显示 urlslug 而不是 Post 表 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

最佳答案

action 方法不指定 URL,它只匹配请求。您需要打印 slug:

@Url.Action("Details", "Post", new { slug = item.Slug })

然后在路由中添加支持你想要的URL结构:

routes.MapRoute(
name: "PostWithSlug",
url: "Post/Details/{slug}",
defaults: new { }

并改变 Action 方法:

public ActionResult Details(string slug)
{
}

但除此之外,您确实想要 URL 中的 ID。否则你不能两次使用相同的帖子标题。

关于c# - 在 mvc 中显示 url slug 而不是 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29752953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com