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