Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何创建用于编辑数据的下拉列表?_Asp.net Mvc_Dropdownlistfor - Fatal编程技术网

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

Asp.net mvc 如何创建用于编辑数据的下拉列表?,asp.net-mvc,dropdownlistfor,Asp.net Mvc,Dropdownlistfor,我有两个局部视图-一个用于添加数据,另一个用于编辑。 其中一个字段表示月份,因此为了插入该字段,我创建了一个带有for循环的ViewBag,该循环从1填充到12。那很好 我的问题是如何进行编辑?如何创建显示编辑月份的相同下拉列表 这是我用来插入的内容: 在我的控制器中: var lMesec = new List<int>(); for (int i = 1; i <= 12; i++) { lMesec.Add(i);

我有两个局部视图-一个用于添加数据,另一个用于编辑。 其中一个字段表示月份,因此为了插入该字段,我创建了一个带有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;

可以创建表单帮助器类。类似于[yourname].cs(建议将所有表单助手放在formhelper文件夹中,以便于访问/定位)

这在过去对我很有效,但下拉列表要大得多。
希望这能有所帮助——同样,交换号码及其相关的拼写版本也很简单,@ADyson提供了答案。
我所要做的就是在编辑表单上使用相同的DropDownListFor,并在控制器的编辑部分定义该列表。

在两种情况下都使用DropDownListFor,并在两种情况下都使用viewbag值。有什么原因导致这样做会有困难吗?是的,因为在编辑时,一开始不会有保存时的值,但会显示第一个值,在这种情况下,数字1“因为编辑时,一开始不会有保存时的值”…您的意思是它没有设置下拉列表以显示选定的值?除非您的模型没有正确填充,否则这是不可能的,抱歉。DropdownListFor将获取
model.mesec
的值,并尝试将其与SelectList中某个项目的值匹配。如果找到匹配项,则在显示页面时,会将该值设置为下拉列表中的选定选项。如果没有匹配项,它会将列表中的第一项设置为所选项。很抱歉我没有注意到。你说得对,我所要做的就是设置下拉列表。非常感谢你!
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" });
}
@Html.numberDropdownlistFor(x => x.Number)