2009-04-20 25 views
10

Html formlarında model ciltleme için çok sayıda örnek var, ancak ActionLinks/GET istekleri için model bağını kullanıp kullanamayacağını ve nasıl yapılacağını merak ediyorum. Ben URL Str özelliklerini sunar istiyorum nasıl göstermek için sunuyoruz;Model bağlama ve GET istekleri?

Yani, aşağıdaki modeli

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

ve aşağıdaki rotayı (bu kurulacağını emin değilim verilen isterdim

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

Chr ve İKO) benim Kontrolör

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

bir in bu şekilde kullanmak d sayfamda bu şekilde (iki olası seçenek; Daha fazlası var mı?)

<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> 

Model bağlama altyapısı ile bu mümkün mü? Ve eğer öyleyse, onları çalışmak için benim örnekleri için ne yapılması gerekiyor?

cevap

5

Ama önce bir parametre yaklaşımı olarak sınıfta ... Bir parametre yaklaşımı

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

olarak sınıf veya parametreler

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index(string str, char chr, double dbl) 
{ 
    /* snip */ 
} 
yaklaştıkça özelliklerini ya almak gerekecek düşünüyorum "UpdateModel" yöntemini kullanabilirsiniz. Yalnızca, modelinizde yalnızca birkaç değeri güncellemek istediğinizde, bu yöntemle güncellemek istediğiniz parametrelerin beyaz listesini iletebilirsiniz.

Ayrıca, MapRoute'unuzda, rota yolunuzda hangi parametreyle eşleşecek? Eminim orada birebir korelasyon olmalı.

3

Ayrıca bir custom model binder kullanabilirsiniz. Ayrıca this'u da okuyun.

+0

Ayrıca harika bir soru için + 1'leyin! –

İlgili konular