如何创建用于编辑数据的下拉列表?

How to create DropDown list for editing data?

我有两个局部视图 - 一个用于添加数据,另一个用于编辑。 其中一个字段代表月份,因此为了插入该字段,我创建了一个带有 for 循环的 ViewBag,从 1 到 12 填充它。这很好用。

我的问题是如何进行编辑?我如何创建相同的下拉列表来显示编辑月份?

这是我要插入的内容:

在我的控制器中:

var lMesec = new List<int>();
        for (int i = 1; i <= 12; i++)
        {
            lMesec.Add(i);

        }

ViewBag.listaMesec = new SelectList(lMesec);

在我看来:

@Html.DropDownListFor(model => model.mesec, ViewBag.listaMesec as SelectList, "Izaberite mesec", new { @class = "form-control"})

当我阅读数据进行编辑时,我认为这是:

 @Html.EditorFor(model => model.mesec, new { htmlAttributes = new { @class = "form-control" } })

如何将其制作成可以包含 1-12 值的下拉列表?

我正在用 SqlDataAdapter 读取数据,所以我有这个值:

 model.mesec = dt.Rows[0][3] != DBNull.Value ? Convert.ToInt32(dt.Rows[0][3]) : 0;

您可以创建表单助手 class。像 [yourname].cs 这样的东西(建议将所有表单助手放在 formhelper 文件夹中以便于 access/locating)

public static MvcHtmlString numberDropdownlistFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
    {
         Dictionary<string, string> numberList = new Dictionary<string, string>()
        {
           {"", "---DropDown Title---"}
          ,{"1", "one"}
          ,{"2", "two"}
          ,{"3", "three"}
          ,{"4", "four"}
          ,{"5", "five"}
          ,{"6", "six"}
          ,{"7", "seven"}
          ,{"8", "eight"}
          ,{"9", "nine"}
          ,{"10", "ten"}
          ,{"11", "eleven"}
          ,{"12", "twelve"}
         };
 return html.DropDownListFor(expression, new SelectList(numberList, "key", "value"), new { @class = "form-control" });
}

然后在您的表单中调用新创建的 ddl,例如:

@Html.numberDropdownlistFor(x => x.Number)

这在过去对我有用,但下拉列表要大得多。 希望这会有所帮助 - 另外,交换数字及其相关的拼写版本

答案很简单,@ADyson 提供了。 我所要做的就是在编辑表单上使用相同的 DropDownListFor,并在控制器的编辑部分定义该列表。