2011-10-26 10 views
6

これは単純だと思っています。MVC 3 - 辞書の表示値の表示

私はそのプロパティの1つとして辞書を持つビューモデルを持っています。この辞書は、レコードを編集しているときにカテゴリにHTML selectを入力するための辞書です。また、選択したCategoryIDを示すプロパティもあります。しかし、レコードを表示しているときに、CategoryIDに対応するキー/値のペアの値を表示したいとします。

マイビューモデル:

public class ItemEditVM 
{ 
    public int ItemID { get; set; } 
    public int? CategoryID { get; set; } 
    public string ItemDesc { get; set; } 
    public Dictionary<int, string> CategorySelect { get; set; } 
} 

私はこのような何かをしようとしましたが、私は間違っている関数のパラメータを持っている:

@Html.DisplayFor(model => model.CategorySelect.TryGetValue(model.CategoryID, out val)) 

私もなし特定に失敗するこれを試してみましたエラーメッセージ:

@Html.DisplayFor(model => model.CategorySelect.SingleOrDefault(c=> int.Parse(c.Value) == model.CategoryID).Value) 

どうすればいいですか?

感謝

正解(ミステールマンのおかげで)

@Html.DisplayFor(model=>model.CategorySelect[Model.CategoryID.Value]) 
+0

私はこのデータベースを設計していないし、アイテムテーブルでCategoryIDはFKですが、nullを受け入れることもできます。私はあなたがそれを行うことができるかどうかはわかりませんでしたとにかく、FKに違反しないように、実際にはCategoryIDが常に入力されます。 – BKahuna

+0

もちろん、FKはnullでもかまいません。 PKの値をnullにすることはできません。ヌルのFKは関係がないことを意味します。 –

答えて

7

あなたが試してみました:

@Model.CategorySelect[Model.CategoryID.Value] 

をあなたが言うように、区分は、その後、nullになりませんので、これは問題ではありません。ヌルになる可能性がある場合を除き、いくつかの検証を行う必要があります。

+0

実際に私はして、それは私に過負荷エラー(いくつかの無効な引数)を与えます – BKahuna

+0

@BKahuna - それは値ではない辞書のインデクサーへの引数は1つだけです。 .Valueを含めましたか?モデルで大文字のMを使用することを確認しましたか? –

+0

いいえ、私はそれを忘れました。 .valueが必要なのはなぜですか?私は元の質問に上記の正しい答えを掲載しました。 @ミステール - 助けてくれてありがとう! – BKahuna

6
@foreach(var keyValue in Model.CategorySelect.keys) 
{ 
    foreach(var cat in @Model.CategorySelect[keyValue] 
    { 
     <p>@cat</p> <!--whatever html you fancy--> 
    } 
} 
+0

私はちょうどあなたに別の方法を与えたいと思っていました。 – hidden

関連する問題