![](/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.