2014-05-25 69 views
0

什麼是我試圖創建靜態項model.satsList,然後選擇項目的選擇名單將在model.SelectedStatsList靜態的SelectList asp.net MVC問題

設置這是我的模型:

public class StatModel 
{ 
     public IEnumerable<int> SelectedItemsRegion { set; get; } 

     public IEnumerable<string> SelectedStatsList { get; set; } 
     public static List<SelectListItem> statList = new List<SelectListItem>() 
       { 
        new SelectListItem() {Text="Request Number", Value="demandeR"}, 
        new SelectListItem() { Text="agR", Value="agR"} 
       };     
} 

我觀點:

@Html.DropDownListFor(model=> model.SelectedStatsList, Model.statList) 

我得到這個錯誤:

'pfebs0.Models.StatModel.statList' cannot be accessed with an instance reference; qualify it with a type name instead 

回答

0

你的問題是基本的C#使用問題。您正嘗試通過實例訪問靜態字段public static List statList,即您在剃刀視圖中擁有的模型。

只需更換這(model.SelectedStatsList):

@Html.DropDownListFor(model=> model.SelectedStatsList, Model.statList) 

有了這個(StatModel.SelectedStatsList):

@Html.DropDownListFor(model=> model.SelectedStatsList, StatModel.statList) 
+0

該問題在Model.statList中。 – Chlebta

+0

是的,這就是我的意思,我把這兩個混在一起(錯字)。所以用StateModel.statList替換Model.statList。我會更新答案 – Mzn

0

(一體化解決方案)可以有一個單獨的輔助類項目中的解決方案處理頁面上的靜態數據。例如:

//Helper.cs

public Helper class(){ 
    public static List<SelectListItem> GetStatList(){ 
     return new List<SelectListItem>() 
      { 
       new SelectListItem() {Text="Request Number", Value="demandeR"}, 
       new SelectListItem() { Text="agR", Value="agR"} 
      };     
    } } 

,並在控制器類這份名單只是綁定到你的模型類,如下:

//MyController.cs

public ActionResult MyModel(){ 
    var model = new MyModel(); 
    model.SelectedStatsList = Helper.GetStatList(); 
    return View("MyView", model); 
} 

確保您在模型類上有一個正確的屬性來設置上面的statlist。 並在你看來,你將有:

@ Html.DropDownListFor(型號=> model.SelectedStatsList,...)

0

只需更改如下您的視圖代碼:

@Html.DropDownListFor(model=> model.SelectedStatsList,pfebs0.Models.StatModel.statList) 
    // Assuming pfebs0.Models is the namespace for the StatModel 

在C#中,您無法從實例訪問靜態屬性。在這種情況下,視圖中的屬性Model是正在傳入的模型的實例。

換句話說,您可以直接訪問靜態屬性而無需創建對象的實例。