簡體   English   中英

靜態SelectList asp.net MVC問題

[英]Static SelectList asp.net MVC issue

什么是我試圖創建一個靜態項目選擇列表model.satsList ,然后選定的項目將被設置model.SelectedStatsList

這是我的模特:

    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

您的問題是基本的C#使用問題。 您正在嘗試通過實例(即Razor視圖中的模型)訪問靜態字段public static List statList

只需替換它(model.SelectedStatsList):

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

與此(StatModel.SelectedStatsList):

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

(一種解決方案)您可以在項目解決方案中擁有單獨的幫助程序類,以處理頁面上的靜態數據。 例如:

//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"} }; } } 

並在您的控制器類中將此列表綁定到您的Model類,如下所示:

//MyController.cs

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

確保您的模型類具有正確的屬性以在上面設置統計列表。 在您看來,您將擁有:

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

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

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM