![](/img/trans.png)
[英]ASP.Net Scaffolded MVC Struggling to populate a dropdownlist with Entity Framework
[英]Compilation error of DropDownList in ASP MVC and Entity Framework
我正在使用C#和SQL Server 2005开发ASP .Net MVC 3应用程序。
我也在使用实体框架和代码优先方法。
我有一个视图“应用程序”,其中包含这样的DropDownList:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication2.Models.FlowViewModel>" %>
<h2>Application</h2>
<form id="form1" runat="server">
<h2><%= Html.Encode(ViewData["Message"]) %> </h2>
<div>
<%:Html.Label("Type :")%><%: Html.DropDownListFor(model => model.SelectedGenre, Model.GenreItems)%>
</div>
尝试访问视图页面时出现编译错误:
编译错误
说明:编译服务于此请求所需的资源期间发生错误。 请查看以下特定的错误详细信息,并适当地修改您的源代码。
这是控制器的一部分:
[HttpGet]
public ActionResult Application(Genre genre)
{
var vv = new FlowViewModel();
vv.GenreItems = db.Genres.ToList();
return View(vv);
}
这是模型的一部分:
public class FlowViewModel
{
[Key]
public string IDv { get; set; }
public List<Genre> GenreItems { get; set; }
public string SelectedGenre { get; set; }
}
第二种方法:
控制器:
[HttpGet]
public ActionResult Application(Genre genre)
{
var vv = new FlowViewModel();
vv.GenreItems = new SelectList(db.Genres.ToList(), "ID_G", "ID_G");
return View(vv);
}
查看:
<div>
<%:Html.Label("Type :")%><%: Html.DropDownListFor(model => model.SelectedGenre, new SelectList(Model.GenreItems,"ID_G","ID_G")%>
</div>
型号:
[NotMapped]
public SelectList GenreItems { get; set; }
public string SelectedGenre { get; set; }
错误:
编译错误
说明:编译服务于此请求所需的资源期间发生错误。 请查看以下特定的错误详细信息,并适当地修改您的源代码。
DropDownListFor是否不需要SelectList来填充值? 我的意思是,您的下拉列表如何知道流派对象的哪个属性用于“值”和“文本”? 您正在传递列表,但需要将该列表转换为SelectList。 这可能不是导致您的错误的原因,但肯定是...
<%: Html.DropDownListFor(model => model.SelectedGenre, new SelectList(Model.GenreItems, "ValueFieldName", "TextFieldName"))%>
我找到解决方案的问题。
我必须创建模型体裁的控制器并使用实体框架生成其视图,以便在基础中创建表体裁。
实际上,我的问题的根源是db (private GammeContext db = new GammeContext();)
,在执行过程中始终将其视为NULL,因为基础中没有表Genre。
因此,视图的代码为:
<div>
<%:Html.Label("Type :")%><%: Html.DropDownListFor(model => model.SelectedGenre, Model.GenreItems)%>
</div>
和控制器:
[HttpGet]
public ActionResult Application(Genre genre)
{
var vv = new FlowViewModel();
vv.GenreItems = new SelectList(db.Genres.ToList(), "ID_G", "ID_G");
return View(vv);
}
这是模型:
public class FlowViewModel
{
[Key]
public string IDv { get; set; }
[NotMapped]
public SelectList GenreItems { get; set; }
public string SelectedGenre { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.