天天看點

ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用動态類型來傳遞ViewData

如果是在使用C#4.0的話使用者可以使用Dynamic的特性來動态通路模型中的屬性,例如我們也像前面使用ViewData.Model一樣傳遞一個執行個體,并且我們使用了如果代碼在Action的View方法中傳遞User的一個執行個體:

那麼我們在視圖中就可以調用如下代碼:

來擷取模型的值,而不對ViewPage類指定具體的Of T類型,正如:

這樣就可以正常運作以及擷取到值了。

優點:可以将傳回不同模型類型的Action來使用同一個模闆,隻要你調用了它們都存在的屬性或方法即可。

缺點:如果你調用了一個該類型中不存在屬性或方法時,就會抛出一個RuntimeBinderException,是以在使用動态類型時我們要做好限制。

總結,這種Dynamic的方式現在還不支援智能感覺,是以一旦寫錯屬性,要等到運作時才能看到,是以它的效果與ViewData[key]的傳值模式基本等價。但是由于它是DLR支援的動态類型是以使用時可以使更多的Controller使用同一View。

繼續閱讀