簡體   English   中英

我可以在 C# 中用 For 填充枚舉嗎?

[英]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 標准的 go,我想將此信息放在我的 Model 內的枚舉中。 我可以做類似的事情來動態地將年份放在枚舉中嗎?

MVC 並未規定所有內容都必須是 class 或枚舉。 讓枚舉成員代表年份是沒有意義的。

你打算給它們取什么名字, Y2021 ,然后去掉Y 還是使用它們的基礎數值,忽略 label?

只需使用一個循環和一個 integer,就像現在一樣。

要接近 MVC 標准,您可以執行以下操作

public ActionResult GetYear()
{
      var model=new ViewModel{ Year=2021,
      Years= Enumerable.Range( 1999,  DateTime.Now.Year -1998)
                         .OrderByDescending(x=>x)
                         .Select(x => new SelectListItem { Value=x.ToString(),Text=x.ToString()});

      return View(model);
}

獲取年份.cshtml

@model ViewModel
.....

 <select class="form-control" id="levels" asp-for="@Model.Year" asp-items="@Model.Years"></select>

和 ViewModel class

public ViewModel 
{
  public int Year {get;set;}
  public List<SelectListItem> Years {get; set;}
}

暫無
暫無

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

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