2009-06-10 2 views
1

В принципе, если бы я хотел сделать что-то страницу поиска с подкачкой я нужен URL, как:ASP.Net MVC: Запрос переменных через маршруты и метод Посмотреть

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

То, что я не могу показаться, чтобы выяснить, это как:?

A) Установить маршрут по умолчанию без поиска и страницы 1 /темы/Главная страница = 1 или даже/темы/Index поиск = & страница = 1

B) использовать Метод просмотра, чтобы сделать то же самое

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

Index(String search, Int32? page) 

И использовать URL:

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

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

/Темы/Index/Hi/1

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

/темы/Главная/1

ответ

0

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

В 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); 
} 
1

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

Url.GenerateUrl("Route", "Index", "Topics", 
    new RouteValueDictionary(new 
    { 
     page = this.Model.PageNumber, 
     search = this.Model.Search 
    }); 
+0

Так что хорошо для скажем ссылку или «переадресовать», но то, что о создании маршрута по умолчанию для страницы? Разве что это работает одинаково? –