2017-05-02 2 views
-1

Also in meinem mvc 5 app, habe ich diesen Standard ‚Index‘ Aktion, die einfach auf die Suchaktion leitet, mit den Standardmodellwerten:Wie generiert MVC 5 URL für GET Redirect Action Ergebnis?

[Route] 
    public ActionResult Index() 
    { 
     var model = new T(); 

     return RedirectToAction("Search", model); 
    } 

Was ich über verwirrt hätte ist, wie ich mit am Ende die URL wie '.../suche? xxx = xxx ...'? Gibt es etwas, was ich tun kann, um die URL-Generation anzupassen oder zumindest zu injizieren/ersetzen, insbesondere den Teil der Abfragezeichenfolge? z.B. Ich möchte 1/0 für Bool-Eigenschaften im Suchmodell anzeigen und Abfrage String-Schlüsselnamen usw. anpassen?

und warum würde jemand für meine Frage abstimmen? psst ...

+1

Das hier beantwortet wurde: http://stackoverflow.com/questions/1067200/how-to -add-querystring-values-with-redirecttoaction-method – Dessus

+0

@Dessus, was ich bin neugierig auf die scheinbar "Serialisierung" -Prozess, der URL aus dem übergebenen Route-Value-Wörterbuch oder einem beliebigen Modelltyp generiert. Ich weiß, was es generiert basierend auf meiner Eingabe, aber ich weiß nicht, wie und wie man speziell anpassen. – Nico

+0

Sie können die nugget Symbole für asp.net herunterladen und sehen, wie RedirectToAction funktioniert. – Dessus

Antwort

0

Die generierte Query-String hängen von dem Modell Eigenschaftsnamen und geben + Wert, den Sie in übergeben.

Zum Beispiel, sagen, wenn Ihr Pass in Modell ist wie

public class MyModel 
{ 
    bool IsSort{get;set;} 
} 

Wenn Ihr Modell ist wie folgt und IsSort Wert ist true, dann werden Sie erhalten url wie /search?IsSort=true

Sagen Sie Ihre Abfrage-String zu 1/0 ändern, anstatt wahr oder falsch ist, dann Ansichtsmodell erstellen, welche Eigenschaft stri hat ng assing es dann richtig mag:

public class MyModel 
{ 
    string IsSort{get;set;} 
} 

var model = new MyModel(); 
model.IsSort = true? "1":"0"; 

gleiche gilt Schlüssel zum Abfragezeichen (die Eigenschaftsnamen entsprechen)

+0

Das funktioniert, aber nicht elegant IMHO. Gibt es etwas Ähnliches wie [JsonProperty], so dass ich mehr Anpassungen vornehmen kann? – Nico

+0

Oder zumindest gibt es einen globalen Ort, um diese Anpassung vorzunehmen, anstatt überall zu schreiben. – Nico

+0

@Nico Wahr, es ist nicht elegant für die ganze Seite. Ich habe es nicht versucht, aber um global zu erreichen, denke ich, dass Sie zwei Dinge tun müssen: 1. Fügen Sie ein benutzerdefiniertes Modellbinder hinzu - wenn also 1 zur Verfügung gestellt wird, kann es sich tatsächlich boolen. 2. Ändere, wie url generiert wird - erzeuge also beim Generieren von URL 1 anstelle von true für boolean. Modellbindung werfen Sie einen Blick auf: https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding, ändern Sie URL Sie können Ihre eigene RedirectToAction-Methode schreiben - ASP .net MVC öffnet ouce, so können Sie etwas von seiner Logik verwenden und Ihr kundenspezifisches Bit hinzufügen, um Ihr Ziel zu erreichen. Ich würde sagen, es ist ziemlich viel Arbeit. –