2010-07-19 28 views
1

將所有數據傳遞給視圖的一種普遍接受的方式是使用一個數據模型,並引用您的域模型以及諸如下拉列表(DDL)之類的其他數據。ASP.NET MVC 2:使用[Data Annotations]來引用可能提供DDL列表的方​​法?

但是,部分視圖(視圖模板也)只接收主模型的一部分,無法訪問發送到原始視圖的模型的根。因此,如果您的DDL列表不是靜態的,那麼部分視圖如何獲取數據?

有沒有一種方法使用[數據註釋]來引用一個方法,該方法可以返回一個字段的可能值,然後在局部視圖的DDL中使用它?存儲庫中此方法的存在位置?

鏈接或C#代碼示例將非常有幫助。

回答

1

沒有內置的Data Annotations屬性可以做你所要求的。

您可以創建自己的屬性,該屬性包含對Type的引用和靜態方法的名稱,然後您可以通過從部分視圖進行反射來調用該方法。

放置這種方法的位置取決於你在做什麼,儘管我仍然認爲收集控制器中的所有輸入會更好。您始終可以在ViewData集合中設置額外的項目,並將其傳遞到您的部分視圖中。

+1

我會認爲靜態方法要麼在存儲庫中,要麼是訪問存儲庫的服務。我會假設一個視圖不允許直接訪問這個服務。但是,我想知道輔助方法是否可以直接訪問服務層中的數據而不會違反視圖的關注?如果是這樣,這是一個很好的答案:使用直接訪問服務層的輔助方法來創建自定義的DDL,如Html.CityDropDownList()。 – 2010-07-19 18:30:16

相關問題