静态选择列表asp.net MVC问题

本文关键字:MVC 问题 net asp 选择 列表 静态 | 更新日期: 2023-09-27 18:05:10

我想创建一个静态项目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

静态选择列表asp.net MVC问题

(一种解决方案)您可以在项目解决方案中使用单独的helper类来处理页面上的静态数据。例如:

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

确保你在你的模型类上有一个正确的属性来设置上面的statlist。在你的视图中,你会看到:

@Html。DropDownListFor模型(模型=>。SelectedStatsList,…)

只需更改视图代码如下:

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

在c#中,你不能从实例中访问静态属性。在这种情况下,视图中的属性Model是传入的模型的实例。

换句话说,您可以直接访问静态属性而无需创建对象的实例。

你的问题是基本的c#使用问题。您正在尝试通过实例访问静态字段public static List statList,即您在Razor视图中的模型。

简单地替换这个(model.SelectedStatsList):

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

使用这个(StatModel.SelectedStatsList):

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