2009-06-10 5 views
1

Grundsätzlich, wenn ich etwas eine Suchseite mit Paging machen wollte ich wie eine URL brauchen würde:ASP.Net MVC: Request-Variablen durch Routen und anzeigen Methode

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

Was kann ich nicht scheinen, um herauszufinden wird, wie:? eine Standardroute ohne Suche und Seite 1 /Themen/Index page = 1 oder sogar/Themen/Index search = & Seite Set

A) = 1

B) verwenden, die View-Methode, um das gleiche zu tun

Ich sehe, dass, wenn ich eine Methode, über die Kontrolle haben:

Index(String search, Int32? page) 

und die URL verwenden:

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

Es gibt mir, was ich in dem Verfahren soll. Ich brauche nur eine Möglichkeit, eine Standardroute für den Topic-Controller zu erhalten, um eine Standard-URL mit den genannten Request-Variablen zu erstellen. Ich glaube einfach nicht, dass

/Themen/Index/hallo/1

zu einer Suche url zuträglich ist, vor allem, weil es gibt keine Garantie Ich werde Suchbegriffe oder eine Seite, so liegt es wie enden könnte :

/Themen/Index/1

Antwort

0

Also im Grunde genommen habe ich mich auf die Handhabung der Nicht-Werte durch Einrichten von Standardeinstellungen auf dem Controller. Nicht sicher, dass dies die beste Idee ist.

In Global.asax:

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

Auf dem Controller: So gut

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

Alles, was Sie in der Routevaluedictionary passieren, die zu einem Teil Ihrer URL als Parameter Abfragezeichenfolgeflag erhält Karte nicht hinzugefügt. So können Sie tun:

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

das ist für etwa einen Link oder eine "Umleitung" aber was ist eine Route Standard für die Seite einrichten? Wenn das nicht genauso funktioniert? –