Я новичок в MVC3 и не могу перейти с этой проблемой.Я делаю простой блог с постами, которые разделены на категории, и у каждого поста может быть несколько тегов.Если я показываю сообщения пользователю, у меня там есть страница, где url похож на localhost / Posts / 1, где «1» - номер страницы.Но как я могу это сделать, если я хочу показывать сообщения только из какой-либо категории или с каким-либо тегом?Он находится в формате localhost / Posts / Categories / 1, где «1» - это идентификатор категории или localhost / Posts / Tags / tag1, где «tag1» - это особый тег. Я бы хотел изменить его на формат localhost / Posts./ Page / 1 или localhost / Posts / Categories / 1 / Page / 1 или localhost / Posts / Tags / tag1 / Page / 1, но я действительно не могу узнать, как этого добиться в контроллере.Поэтому мой вопрос: как заставить методы в контроллере принимать эти сложные 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));
}