2011-10-29 18 views
1

前の質問(これはもちろん別の質問です)で述べたように、「Something」というモデルには3つのプロパティがあります:表示するプロパティを取得できません

int SomethingID 
string Name 
List<System.Drawing.Color> 

(もちろん、それは元のコードではありません、いくつかの長さを保存することで、一部の読者を節約したい)

そして、私の初期化子はこれです:

protected override void Seed(DatabaseContext context) 
{ 
    var somethings = new List<Something> 
    { 
     new Something 
     { 
      Name="blah blah", Colors= { Color.Black, Color.Red } 
     } 
    }; 
     somethings.ForEach(s => context.Somethings.Add(s)); 
     context.SaveChanges(); 

     base.Seed(context); 
} 

ビュー内でこれらの色を取得しようとすると、色は空になります。 somethingsを構築した直後にInitializer内にブレークポイントを設定すると、Countが2であるColorsというプロパティが表示されます(ID、名前、および色のオブジェクトがあるので問題ありません)。

しかし、それがビューの中にあるとき、デバッガはColorsのカウントが0であることを示しています。あなたが推測できるように、リストは空です。 Colors: Black Red

現在の結果: Colors:(空)

+0

以下の私の答えに、名前付き色の文字列をデータベースとのシステムカラーリストにシームレスに変換する変換プロパティを追加しました。現在のシステムカラーリストを維持するだけで、文字列プロパティは自動的にそれを翻訳し、リレーショナルデータベースの状態を維持します。 – benjamin

答えて

1

あなただけのコードブロックで色をリストアップしているではなく

Colors: 
    @foreach (var itemColor in item.Colors) 
    { 
     itemColor.ToString(); 
    } 

望ましい結果ビュー内部

それらをスクリーンに書き込む。かみそりの構文 http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

EDIT

変更にとのデータベースから色を命名変換します。この文字列プロパティを含めるためにあなたのオブジェクトのクイックリファレンスを取得するために

Colors: 
    @foreach (var itemColor in item.Colors) 
    { 
     @(itemColor.ToString()) 
    } 

私のお気に入りの場所を試してみてくださいあなたの色リストプロパティ。この方法では、オブジェクトは情報をプロパティに変換することを完全に制御でき、通常どおりに使用することができます。

 public string SavedColors 
     { 
      get { return Colors.Aggregate("", (current, color) => current + (color.Name + ",")).TrimEnd(','); } 
      set 
      { 
       Colors = value.Split(',').Select(Color.FromName).ToList(); 
      } 
     } 
     [NotMapped] 
     public List<System.Drawing.Color> Colors { get; set; } 
+0

これはコードのどこに@を書いても間違いです。 bracersに気づく。デバッガは 'Colors'プロパティが空であることを示すので、ビューは問題ではありません。 – MasterMastic

+0

あなたが投稿したコードからも、あなたはその色のデータベースをシードしているようです。データベースの値はありますか?それらがコードであれば、コントローラでビューにプッシュしていますか?コントローラーは、モデルビルダーではなく、ビューに表示されるものを決定するものです。 – benjamin

+0

データベースに登録されているかどうかを確認するにはどうすればよいですか? Visual Studioの中には色がありませんが、それは普通だと思います。(私のコントローラは、VSのテンプレートから構築された、それに触れていませんでした) – MasterMastic

関連する問題