静态选择列表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
(一种解决方案)您可以在项目解决方案中使用单独的helper类来处理页面上的静态数据。例如:
//Helper.cspublic 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.cspublic 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)