如果是在使用C#4.0的話使用者可以使用Dynamic的特性來動态通路模型中的屬性,例如我們也像前面使用ViewData.Model一樣傳遞一個執行個體,并且我們使用了如果代碼在Action的View方法中傳遞User的一個執行個體:
那麼我們在視圖中就可以調用如下代碼:
來擷取模型的值,而不對ViewPage類指定具體的Of T類型,正如:
這樣就可以正常運作以及擷取到值了。
優點:可以将傳回不同模型類型的Action來使用同一個模闆,隻要你調用了它們都存在的屬性或方法即可。
缺點:如果你調用了一個該類型中不存在屬性或方法時,就會抛出一個RuntimeBinderException,是以在使用動态類型時我們要做好限制。
總結,這種Dynamic的方式現在還不支援智能感覺,是以一旦寫錯屬性,要等到運作時才能看到,是以它的效果與ViewData[key]的傳值模式基本等價。但是由于它是DLR支援的動态類型是以使用時可以使更多的Controller使用同一View。