从viewModel到Asp.net MVC 3的下拉列表

时间:2012-09-02 12:48:53

标签: asp.net-mvc viewmodel

我有一个模特。这个模型看起来像这样:

public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public List<Category> Parent { get; set; }

在添加操作中,我填充了Parent:

public ViewResult Add()
{
    var addCategoryModel = new CategoryEditModel
    {
        Parent = Mapper.Map<List<Category>>(_productRepository.Categories.ToList())
    };
    return View("add", addCategoryModel);
}

当我提交表单时,我的模型状态始终无效,因为我在DropDownList中选择的值“..无效”。 我弄错了。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我在MVC中遇到了一些困难时期的下降和助手。我终于采用了以下方法:

在我的视图模型中,我创建:

public List<SelectListItem> employeeList;
public int SelectedItemID;

通常会有一个get用于通过数据库/实体框架填充下拉列表:

public IEnumerable<SelectListItem> employeeList
    {
        get
        {
            return new SunGardDBEntities()
                .employees
                .OrderBy(e => e.employeeFName)
                .ToList()
                .Select(e => new SelectListItem { Text = e.employeeFName + " " + e.employeeLName, Value = e.employeeID.ToString() });
        }
    }

然后在我的.cshtml文件中,我说:

@Html.DropDownListFor(model => model.SelectedItemID, new SelectList(Model.employeeList, "Value", "Text"), new Dictionary<string, object> { { "data-placeholder", "Choose a sandbox..." }, { "class", "chzn-select" }, { "style", "width:200px;" } })