2014-03-03 53 views
1

我是mvc的新手,我想在MVC 3.0中綁定dropdownlist。下面如何在mvc 3.0中綁定dropdownlist

tbl_Modules 
------------------ 
Module_Id 
ModuleName 
ModuleDescription 



tbl_DocumentTypes 
------------------- 
Document_Id 
DocumentName 
DocumentDescription 
Module_Id 

我的代碼是給我想創建一個表單添加文檔類型和形式我想Module_Id的價值,ModuleName爲文本下拉列表。

public class DocumetRepository 
{ 
    InwardManagementEntities db = new InwardManagementEntities(); 
    public IQueryable<tbl_DocumentTypes> FindAllDocumentTypes() 
    { 
     return db.tbl_DocumentTypes; 
    } 
} 

public class DocumentTypeViewModel 
{ 
    ModuleRepository _modulerepository = new ModuleRepository(); 
    public tbl_DocumentTypes Document { get; private set; } 
    public SelectList Modules { get; private set; } 

    public DocumentTypeViewModel(tbl_DocumentTypes document) 
    { 
      Document = document; 
      //var _modules = _modulerepository.FindAllModules().Select(d => new {Module_Id= SqlFunctions.StringConvert((double?)d.Module_Id), Text = d.ModuleName }); 
      var _modules = _modulerepository.FindAllModules().Select(d => new SelectListItem() {Value= SqlFunctions.StringConvert((double?)d.Module_Id), Text = d.ModuleName }); 
      Modules = new SelectList(_modules, Document.Module_Id); 
     } 
} 

控制器:

public ActionResult AddDocument() 
{ 
    tbl_DocumentTypes _document = new tbl_DocumentTypes(); 
    return View(new DocumentTypeViewModel(_document)); 
} 

查看:

<div class="editor-label">Module</div> 
<div class="editor-field"> 
    @Html.DropDownList("Document.Module_Id", Model.Modules.ToList()) 
    @Html.ValidationMessageFor(model => model.Document.Module_Id) 
</div> 

但在下拉列表我越來越System.Web.Mvc.SelectListItem。請幫忙。

回答

0

更改您的DocumentTypeViewModelModule屬性類型的IEnumerable<SelectListItem>

public class DocumentTypeViewModel 
{ 
    ModuleRepository _modulerepository = new ModuleRepository(); 
    public tbl_DocumentTypes Document { get; private set; } 
    public IEnumerable<SelectListItem> Modules { get; private set; } 

    public DocumentTypeViewModel(tbl_DocumentTypes document) 
    { 
      Document = document; 
      //var _modules = _modulerepository.FindAllModules().Select(d => new {Module_Id= SqlFunctions.StringConvert((double?)d.Module_Id), Text = d.ModuleName }); 
      Modules = _modulerepository.FindAllModules() 
        .Select(d => new SelectListItem 
           { 
            Value= SqlFunctions.StringConvert((double?)d.Module_Id), 
            Text = d.ModuleName 
           });   
     } 
} 

而在你的看法:

<div class="editor-label">Module</div> 
<div class="editor-field"> 
    @Html.DropDownList("Document.Module_Id", Model.Modules) 
    @Html.ValidationMessageFor(model => model.Document.Module_Id) 
</div>