0

C# と SQL Server 2005 を使用して ASP .Net MVC 3 アプリケーションを開発しています。

Entity Framework と Code First Method も使用しています。

次のような DropDownList を含むビュー 'Application' があります。

<%@ 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; } 
}

2番目のアプローチ:

コントローラー:

[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; } 

エラー :

コンパイル エラー

説明: この要求を処理するために必要なリソースのコンパイル中にエラーが発生しました。次の特定のエラーの詳細を確認し、ソース コードを適切に変更してください。

4

2 に答える 2

1

DropDownListFor は、値を入力するために SelectList を必要としませんか? Genre オブジェクトのどのプロパティを Value に使用し、どのプロパティを Text に使用するかをドロップダウン リストがどのように認識するのでしょうか。List を渡していますが、そのリストを SelectList に変換する必要があります。これはバグの原因ではないかもしれませんが、確かに可能性があります...

 <%: Html.DropDownListFor(model => model.SelectedGenre, new SelectList(Model.GenreItems, "ValueFieldName", "TextFieldName"))%>
于 2013-05-23T15:07:45.690 に答える
0

私は解決策の問題を見つけます。

ベースにテーブル Genre を作成するには、Model Genre の Controller を作成し、Entity Framework を使用してそのビューを生成する必要があります。

実際、私の問題の原因は dbであり、ベースにテーブル Genre がない(private GammeContext db = new GammeContext();)ため、実行時に常に NULL と見なされます。

したがって、ビューのコードは次のとおりです。

<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; } 
   }
于 2013-05-23T22:28:31.697 に答える