我可以在 C# 中用 For 填充 Enum 吗?
Can I populate Enum with For in C#?
我正在使用 Asp.net 和 MVC,创建一个代码,人们需要在其中输入月份和年份来执行搜索。
我为一年中的几个月创建了一个枚举,但我找不到为这些年创建一个枚举的“正确”方式,因为我必须手动填充并每年添加一个新值。
在我的 Cshtml 中我就是这样做的
<select name="ano">
@for (int i = DateTime.Now.Year; i > 1999; i--)
{
<option>@i</option>
}
</select>
但是为了达到 MVC 标准,我想将这些信息放在模型中的枚举中。我可以做一些类似于动态地将年份放入枚举中的事情吗?
MVC 并没有规定一切都必须是 class 或枚举。让枚举成员代表年份是没有意义的。
你打算给它们取什么名字,Y2021
然后去掉 Y
?或者使用它们的基础数值,忽略标签?
只需使用一个循环和一个整数,就像您现在所做的那样。
要接近 MVC 标准,您不需要创建任何枚举,您必须创建一个模型
public ViewModel
{
public int Year {get;set;}
public List<SelectListItem> Years {get; set;}
}
和控制器动作
public ActionResult GetYear()
{
var years = new List<SelectListItem>();
for (var i = DateTime.Now.Year; i >= 1999 ; i--)
years.Add ( new SelectListItem { Value=i.ToString(),Text=i.ToString()});
var model=new ViewModel{ Year=2021,Years= years});
return View(model);
}
并查看 GetYear.cshtml
@model ViewModel
.....
<select class="form-control" asp-for="@Model.Year" asp-items="@Model.Years"></select>
我正在使用 Asp.net 和 MVC,创建一个代码,人们需要在其中输入月份和年份来执行搜索。 我为一年中的几个月创建了一个枚举,但我找不到为这些年创建一个枚举的“正确”方式,因为我必须手动填充并每年添加一个新值。
在我的 Cshtml 中我就是这样做的
<select name="ano">
@for (int i = DateTime.Now.Year; i > 1999; i--)
{
<option>@i</option>
}
</select>
但是为了达到 MVC 标准,我想将这些信息放在模型中的枚举中。我可以做一些类似于动态地将年份放入枚举中的事情吗?
MVC 并没有规定一切都必须是 class 或枚举。让枚举成员代表年份是没有意义的。
你打算给它们取什么名字,Y2021
然后去掉 Y
?或者使用它们的基础数值,忽略标签?
只需使用一个循环和一个整数,就像您现在所做的那样。
要接近 MVC 标准,您不需要创建任何枚举,您必须创建一个模型
public ViewModel
{
public int Year {get;set;}
public List<SelectListItem> Years {get; set;}
}
和控制器动作
public ActionResult GetYear()
{
var years = new List<SelectListItem>();
for (var i = DateTime.Now.Year; i >= 1999 ; i--)
years.Add ( new SelectListItem { Value=i.ToString(),Text=i.ToString()});
var model=new ViewModel{ Year=2021,Years= years});
return View(model);
}
并查看 GetYear.cshtml
@model ViewModel
.....
<select class="form-control" asp-for="@Model.Year" asp-items="@Model.Years"></select>