asp.net-mvc如何使用视图模型来填充下拉列表

发布时间: 2016/10/9 2:42:00
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我目前使用 ViewBag 来将数据传递到该下拉列表中。 我想要使用的模型来代替,但我不能让它工作。这里是我的有︰

public ActionResult Index(int? catID)
        {   
            GiftListItems viewModel = new GiftListItems
            {
                Categories = **how do I use this property for DropDown list ?**
            };

            // using this for DropDown list now :  
            var query = _categoryRepository.Table 
                                    .Select(x => new { x.Id, x.Name })        
                                    .Distinct()
                                    .OrderBy(x => x.Name);
            ViewBag.Values = new SelectList(query.AsEnumerable(), "Id", "Name"); 

            return View(viewModel); 
        }    

    In View :
    @Html.DropDownList("catID", (SelectList)ViewBag.Values, new { onchange = "this.form.submit();" })

    Model :
  public class GiftListItems
    {        
        public IEnumerable<Category> Categories { get; set; }
    }   

是这容易做到吗?谢谢你

解决方法 1:

你可以使用像这样-视图模型

public ActionResult NewsEdit(int ID, dms_New dsn)
{
    var query = _categoryRepository.Table 
                          .Select(x => new { x.Id, x.Name })        
                          .Distinct()
                          .OrderBy(x => x.Name)).ToList();

    GiftListItems viewModel = new GiftListItems
    {
        Categories = query.Select(x => new SelectListItem
        {
            Value = x.ID.ToString(),
            Text = x.Name
        })
    };
    return View(viewModel);
}

和你的观点-

@model GiftListItems

@Html.DropDownList(
    "catID",
    Model.Categories, 
    new { onchange = "this.form.submit();" }
)

你的视图模型现在应该看起来像这-

public class GiftListItems
    {        
        public IEnumerable<SelectListItem> Categories { get; set; }
        // public IEnumerable<Category> Categories { get; set; }  --
    }
官方微信
官方QQ群
31647020