gpt4 book ai didi

c# - C# MVC3 中的复杂 URL

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:05 26 4
gpt4 key购买 nike

我是 MVC3 的新手,无法解决这个问题。我正在制作一个包含帖子的简单博客,这些帖子分为几类,每个帖子可能有一些标签。如果我向用户显示帖子,我会在那里进行分页,其中 url 类似于 localhost/Posts/1,其中“1”是页面编号。但是,如果我只想显示来自某个类别或带有某个标签的帖子,我该怎么做呢?它的格式为 localhost/Posts/Categories/1,其中“1”是类别的 ID 或 localhost/Posts/Tags/tag1,其中“tag1”是特定标签我想将其全部更改为 localhost/Posts/Page/1 或 localhost/Posts/Categories/1/Page/1 或 localhost/Posts/Tags/tag1/Page/1 格式,但我真的不知道如何在 Controller 中实现这一点。所以我的问题是:如何让 Controller 中的方法接受这些复杂的 url?

我猜它与路由有关,但找不到任何关于我的问题的解释。

非常感谢您的帮助。

我的代码:

public ActionResult Tags(string id)
{
Tag tag = GetTag(id);
ViewBag.IdUser = IDUser;
if (IDUser != -1)
{
ViewBag.IsAdmin = IsAdmin;
ViewBag.UserName = model.Users.Where(x => x.IDUser == IDUser).First().Name;
}
return View("Index", tag.Posts.OrderByDescending(x => x.DateTime));
}

public ActionResult Index(int? id)
{
int pageNumber = id ?? 0;
IEnumerable<Post> posts =
(from post in model.Posts
where post.DateTime < DateTime.Now
orderby post.DateTime descending
select post).Skip(pageNumber * PostsPerPage).Take(PostsPerPage + 1);
ViewBag.IsPreviousLinkVisible = pageNumber > 0;
ViewBag.IsNextLinkVisible = posts.Count() > PostsPerPage;
ViewBag.PageNumber = pageNumber;
ViewBag.IdUser = IDUser;
if (IDUser != -1)
{
ViewBag.IsAdmin = IsAdmin;
ViewBag.UserName = model.Users.Where(x => x.IDUser == IDUser).First().Name;
}
return View(posts.Take(PostsPerPage));
}

最佳答案

创建新路由以将这些 URL 模式定向到您的 Controller (或其他 Controller ,视情况而定)

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

比如这个路由定义

   routes.MapRoute(
"CategoryPage", // Route name
"Posts/Categories/{CategoryID}/Page/{PageID}", // URL with parameters
new { controller = "Home", action = "ViewPage", CategoryID = "", PageID="" } // Parameter defaults
);

将被 HomeController 中的此操作拾取:

public ActionResult ViewPage(int CategoryID, int PageID)

关于c# - C# MVC3 中的复杂 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9294762/

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