2012-09-02 106 views
0

我有一个模型。这种模式是这样的:Asp.net MVC 3从viewModel Dropdownlist

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

在添加动作我填充父:

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

当我提交表单我的模型状态始终是无效的,因为在我的DropDownList的选定值” ..是无效。” 我犯了错误。什么是正确的方法来做到这一点?

+0

你能证明你的观点? –

回答

1

我已经有一些困难的时候与下降和帮助他们在MVC也。我终于已经采用了以下方法,因为我的方式:

在我的视图模型创建:

public List<SelectListItem> employeeList; 
public int SelectedItemID; 

通常会对通过数据库/实体框架下填充降得:

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;" } })