c# – 将int转换为string用于dropdownlistfor

我有一个年龄的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);
    }

编辑:
在您更新了填充年龄列表的方式之后,我的下拉列表仍在工作,但是下拉列表中的第一个值为空值.检查编辑过的控制器.

《c# – 将int转换为string用于dropdownlistfor》

点赞