2009-04-20 11 views
10

Es gibt Tonnen von Beispielen für Modellbindung in HTML-Formularen, aber ich frage mich, ob es möglich ist, und wenn, wie, Modellbindung für ActionLinks/GET-Anforderungen zu verwenden.Modellbindung und GET-Anfragen?

Also, mit dem folgenden Modell

public class Lurl 
{ 
    public string Str {get;set;} 
    public char Chr {get;set;} 
    public double Dbl {get;set;} 
} 

und die folgende Route (Ich bin nicht sicher, wie diese gebildet werden würde, stelle ich es zu zeigen, wie ich die URL der Eigenschaften Str präsentiert möchten, Chr und DBL)

routes.MapRoute(
    "LurlRoute", 
    "Main/Index/{str}/{chr}/{dbl}", 
    new 
    { 
     controller = "Main", 
     action = "Index", 
     lurl = (Lurl)null 
    } 
); 

Ich mag würde es auf diese Weise in meinem Controller-

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index(Lurl lurl) 
{ 
    /* snip */ 
} 

eine verwenden, d so in meiner Seite (zwei mögliche Optionen; Gibt es mehr?)

Ist dies mit der Modellbindungsinfrastruktur möglich? Und wenn ja, was muss mit meinen Proben gemacht werden, damit sie funktionieren?

Antwort

5

Ich denke, Sie werden entweder die Klasse als Parameter Ansatz

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index(Lurl lurl) 
{ 
    /* snip */ 
} 

oder die Eigenschaften als Parameter nähern

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index(string str, char chr, double dbl) 
{ 
    /* snip */ 
} 

... obwohl in der Klasse als Parameter Ansatz wählen haben können Sie die Methode "UpdateModel" verwenden. Sie können eine Whitelist von Parametern übergeben, die Sie mit dieser Methode aktualisieren möchten, nur für den Fall, dass Sie nur einige Werte in Ihrem Modell aktualisieren möchten.

Auch, in welcher MapRoute wird in Ihrem Route Pfad lurl map? Ich bin mir ziemlich sicher, dass es dort eine Eins-zu-eins-Korrelation geben muss.