[英]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.