首页 > 解决方案 > 在 razor 中使用 for 循环填充下拉列表

问题描述

我知道这不是最好的做法,但我很好奇你将如何在 razor 中dropdownlist使用for循环来填充。

我正在尝试这样做

@{
      int year = DateTime.Now.Year;

      @Html.DropDownListFor(model => model.ResolutionYear, new List<SelectListItem>
      {
          for (var i = 0; i < 10; i++)
          {
              if (year - i == year)
              {
                  new SelectListItem() { Text = (year - i).ToString(), Value = (year - i).ToString(), Selected = true };
              }
              else
              {
                  new SelectListItem() { Text = (year - i).ToString(), Value = (year - i).ToString() };
              }
          }
        })
}

它似乎不喜欢我这样做的方式,因为它一直对我大喊大叫,我} expected拥有每个开放括号的所有右括号。也许我在填充我的DropDownList错误?甚至可以以这种方式填充,还是我应该在控制器中进行填充?

标签: c#asp.net-mvcrazor

解决方案


不要这样做。尽可能保持您的观点温和。使用您的视图模型和控制器,这就是它们的用途。但出于好奇,这里有一种方法:

@{ var year = DateTime.Now.Year; }
<select>
@for (var i = year; (i > year - 10); i--)
{
    if (i == (year - 3))
    {
        <option value="@i" selected>@i</option>
    }
    else
    {
        <option value="@i">@i</option>
    }
}
</select>

推荐阅读