2009-04-20 15 views
10

Istnieje mnóstwo przykładów wiązania modelu w formularzach html, ale zastanawiam się, czy jest to możliwe, a jeśli tak, to jak użyć powiązania modelu dla żądań ActionLinks/GET.Powiązanie modelu i żądania GET?

więc, biorąc pod uwagę następujący model

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

i następującą trasą (nie jestem pewien, w jaki sposób miałoby to być utworzona; przedstawiam to, aby pokazać, jak chciałbym URL przedstawiono właściwości Str, Chr i Dbl)

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

chciałbym użyć go w ten sposób w moim kontrolera

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

się d w ten sposób na mojej stronie (dwie możliwe opcje; czy jest ich więcej?)

<div class="links"> 
    <%Html.ActionLink("Link one", "Index", new { lurl = Model })%><br /> 
    <%Html.ActionLink("Link two", "Index", 
     new { str = Model.Str, chr = Model.Chr, dbl = Model.Dbl })%> 
</div> 

Czy jest to możliwe z infrastrukturą wiążącą model? A jeśli tak, to co trzeba zrobić z moimi próbkami, aby działały?

Odpowiedz

5

myślę, że trzeba wybrać albo klasę jako podejścia parametru

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

lub właściwości jak parametry zbliżają

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

... w klasie jako parametru chociaż podejścia , możesz użyć metody "UpdateModel". Możesz przekazać białą listę parametrów, które chcesz zaktualizować za pomocą tej metody, na wypadek gdybyś tylko chciał zaktualizować kilka wartości w swoim modelu.

Ponadto, w swoim MapRoute, który parametr będzie lurl map do w ścieżce trasy? Jestem prawie pewien, że musi istnieć korelacja jeden do jednego.

Powiązane problemy