簡體   English   中英

ASP MVC和實體框架中DropDownList的編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM