ASP.Net MVC: запрос переменных через Routes и метод View - PullRequest
1 голос
/ 11 июня 2009

В принципе, если бы я хотел сделать что-то поисковым страницей с подкачкой страниц, мне понадобился бы URL-адрес типа:

/Topics/Index?search=hi&page=1

То, что я не могу понять, это как:

А) Установить маршрут по умолчанию без поиска и страницы 1 / Topics / Index? Page = 1 или даже / Topics / Index? Search = & page = 1

B) используйте метод View, чтобы сделать то же самое

Я вижу, что если у меня есть метод для элемента управления:

Index(String search, Int32? page)

И используйте URL:

/Topics/Index?search=hi&page=1 or /Topics/Index?search=hi

Это дает мне то, что я хочу в методе. Мне просто нужен способ получить маршрут по умолчанию для контроллера темы, чтобы создать URL по умолчанию с указанными переменными запроса. Я просто не думаю, что

/ Темы / Главная / привет / 1

Способствует поисковому URL, в основном потому, что нет никакой гарантии, что у меня будут поисковые термины или страница, поэтому она может выглядеть так:

/ Темы / Указатель / 1

Ответы [ 2 ]

1 голос
/ 11 июня 2009

Все, что вы передаете в RouteValueDictionary, которое не отображается на часть вашего URL, будет добавлено в качестве параметра строки запроса. Так что вы можете сделать:

Url.GenerateUrl("Route", "Index", "Topics", 
  new RouteValueDictionary(new 
    { 
      page = this.Model.PageNumber, 
      search = this.Model.Search
    });
0 голосов
/ 12 июня 2009

Так что в основном я прибегнул к обработке ненулевых значений, установив значения по умолчанию на контроллере. Не уверен, что это лучшая идея.

В GLobal.asax:

routes.MapRoute
(
 "TopicDefault",                                              
 "Topic/{action}",                          
  new { controller = "Topic", action = "Index"}  
);

На контроллере:

public ActionResult Index(Int32? parentForumId, Int32? pageNumber, Int32? amountToShow)
{

  Int32 revisedPageNumber = pageNumber.HasValue ? pageNumber.Value : 0;
  Int32 revisedAmountToShow = amountToShow.HasValue ? amountToShow.Value : 10;
  Int32 revisedParentForumId = parentForumId.HasValue ? parentForumId.Value : 1;

  IList<TopicCreateViewModel> modelValues =
     Topic.GetListForGrid(revisedParentForumId, revisedPageNumber, 
       revisedAmountToShow, out realPage)


  return View("Index", modelValues);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...