我創建了一個類來保存一些靜態數據:通過視圖模型傳遞參考/靜態數據的視圖,MVC3
static public class ReferenceData
{
[DisplayName("Status")]
public IEnumerable<SelectListItem> StatusType
{
get
{
return new[]
{
new SelectListItem { Value = "0", Text = "Release" },
new SelectListItem { Value = "1", Text = "Beta" },
new SelectListItem { Value = "2", Text = "Alpha" },
};
}
}
}
現在我想使用該類數據來填充一個下拉列表中視圖。我有以下視圖模型:
public class adminViewModel
{
public HouseData HouseData { get; set; }
public string Status { get; set; }
public ReferenceData ReferenceData { get; } // <<<<<< My problem here
}
@Html.DropDownListFor(
x => x.Status,
new SelectList(Model.ReferenceData.StatusType, "Value", "Text"),
new { style = "display: inline;" }
)
,我的問題是,我不知道這是因爲我使用一個靜態類,並做一個有效的方式,當我有搞定;還有裏面的{}它在抱怨一個錯誤消息編譯說:
static types cannot be used as return types
我真的需要,使之成爲非靜態和實例化類之前,我可以在視圖模型,即使數據使用總是靜態的?
,不同之處在於數據類型應該位於viewbag,viewdata或tempdata中。除了viewmodel之外的任何地方。該數據與模型無關。 – 2011-06-13 08:41:43
@nathan gonzalez,ViewBag和ViewData是ASP.NET MVC中最邪惡的東西,對於我來說這種數據絕對不應該存在。 TempData,我不知道=>有一些罕見的情況下,這可能是有用的。我認爲你的意思是這個數據可以在控制器動作查詢的存儲庫方法中進行硬編碼,以填充模型。那麼我會同意你的看法。 – 2011-06-13 08:45:31
存儲庫中的硬編碼?我不認爲我會這樣做。你爲什麼討厭viewbag和viewdata。這種類型的數據是他們設計的。視圖模型是針對視圖模型的,這些數據顯然不是其中的一部分。 – 2011-06-13 08:49:16