寻求从ViewModel创建DropDownListFor的帮助

时间:2014-12-14 22:33:25

标签: c# asp.net-mvc html.dropdownlistfor selectlist

请查看此链接http://odetocode.com/blogs/scott/archive/2013/03/11/dropdownlistfor-with-asp-net-mvc.aspx,其中代码显示以下内容:

public class ViewModel
{
    private readonly List<IceCreamFlavor> _flavors;

    [Display(Name = "Favorite Flavor")]
    public int SelectedFlavorId { get; set; }

    public IEnumerable<SelectListItem> FlavorItems
    {
        get { return new SelectList(_flavors, "Id", "Name");}
    }
}

链接页面上代码块下面的行提到从某个数据库填充_flavors。我的问题是,这会在哪里?将数据直接提取到ViewModel而不是Controller中是否正常?如果是这样,我会创建一个构造函数并将我的DAL抛入其中以填充_flavours吗?既然只读它,我还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

不确定为什么你想让_flavors只读,特别是当ViewModel类没有构造函数时 - 看起来像是一个错误/错字。不幸的是odetocode.com似乎失败了,所以我只能建议以下解决方案:

制作一个非常简单的ViewModel类

public class ViewModel
{
    public List<IceCreamFlavor> Flavors { get; set; }

    [Display(Name = "Favorite Flavor")]
    public int SelectedFlavorId { get; set; }

    public IEnumerable<SelectListItem> FlavorItems
    {
        get { return new SelectList(Flavors, "Id", "Name");}
    }
}

在控制器操作方法中实例化ViewModel

public ActionResult CreateFlavour() {
    var model = new ViewModel {
        Flavors = GetFlavorsFromDB(); // This is a fake method, supposed to get your data 
    }

    return View(model);
}

在您的查看电话DropDownListFor

@Html.DropDownListFor(m => m.SelectedFlavorId, Model.FlavorItems, 'Please select a flavor')

有关详细信息,请查看我在ASP.NET MVC中如何使用DropDownListFor的文章:'Using simple Drop Down Lists in ASP.NET MVC'