我是mvc的新手,我想在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 :(得分:0)
将Module
的{{1}}属性更改为DocumentTypeViewModel
的类型
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
});
}
}