我有一个年龄的int属性,以及可供选择的年龄的选择列表.检索数据进行编辑时,我在添加tostring()方法时遇到错误:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
所以我的viewmodel看起来像:
public int LowerAgeLimit { get; set; }
public List<SelectListItem> Ages { get; set; }
我的查询是正确检索数据,然后在视图中我试图将数据显示如下:
@Html.DropDownListFor(x => x.LowerAgeLimit.ToString()
, Model.CreateGroupForm.Ages
, new { @class = "form-control" })
如果没有tostring()方法,它会显示空白,因为它需要一个字符串.但它不会让我转换为没有错误的字符串.我也尝试在viewmodel中创建一个新的字符串Age属性,并将int转换为查询中的字符串,但我仍然无法让dropdownlist显示该值.
在查询中,我填写了年龄列表,如下所示:
model.CreateGroupForm.Ages.Insert(0, (new SelectListItem { Text = "", Value = "" }));
for (int i = 1; i < 100; i++)
{
model.CreateGroupForm.Ages.Insert(i, (new SelectListItem {Text = i.ToString(), Value = i.ToString()}));
}
最佳答案 我已经创建了一个新的MVC项目,并尝试了以下内容:
模型:
public class Test
{
public int LowerAgeLimit { get; set; }
public List<SelectListItem> Ages
{
get;set;
}
}
视图:
@model WebApplication1.Models.Test
@Html.DropDownListFor(x => x.LowerAgeLimit, Model.Ages)
控制器:
public ActionResult Index()
{
Test tst = new Test();
tst.Ages = new List<SelectListItem>();
tst.Ages.Insert(0, (new SelectListItem { Text = "", Value = "" }));
for (int i = 1; i < 100; i++)
{
tst.Ages.Insert(i, new SelectListItem { Text = i.ToString(), Value = i.ToString() });
}
return View(tst);
}
编辑:
在您更新了填充年龄列表的方式之后,我的下拉列表仍在工作,但是下拉列表中的第一个值为空值.检查编辑过的控制器.