2011-12-08 11 views
0

これは私が何か単純なものが欠けている場合は謝罪が、それはとにかくここにあります。それが簡単なのであれば、記事の方向などを指摘して嬉しいです。MVC3ルックアップリストhtmlヘルパー

IDを指定してリストから値を表示するヘルパーはありますか。

私が探しているカミソリで次のように行うことができるようにされています。上記の例では

@Html.LookedUpValueFor(model => model.id, Lists.SelectList1) 

を、私はLists.SelectList1がある静的SelectListのことを期待したいですSelectListの "Value"列の "id"。

「目標」は、「ID」の代わりに「名前」が表示されるようにすることです。私は手動でこれを行うことができました私は確信していますが、私はMVCが私の目標を容易に達成するための何らかの方法を持っているべきだと思っています。

理想的には、私が作成したViewModelでメンバーを帰属させて、「LookupList」が特別なことだと言ったのが好きでした。

[LookupList(Lists.SelectList1, "id")] 

またはより良い "ID" はリストを形成するクラスのメンバーである

[LookupList(Lists.StandardList, "id")] 

もしそうでなければ、この機能を達成するための他の推奨方法がありますか?

答えて

1

だから、名前を表示したいだけで、ドロップダウンリストは表示したくないのですか?

「LookupListを」のサブフォルダと呼ばれるDisplayTemplatesで定義された表示テンプレートの名前です
@Html.DisplayFor(model => model.id, "LookupList") 

(:このような場合は、あなたが呼びたいよう

、あなたはおそらく、カスタムDisplayTemplateを使用する必要がありますMVC命名規則)。

この表示テンプレートは次のようになります。

@model int 
@using System.Linq 

@Lists.SelectList1.Single(s => s.Value == Model.ToString()).Text 

あなたはそれをやった

+0

を示唆するように、これはおそらく、別のHTMLヘルパーにする必要がありますけれどもあなたのビューは、このロジックを持つべきではないが、中他の人はわかりません... DisplayTemplatesは "Views \ Shared"または "Views \ "に移動する必要があります。きちんとした、そして再利用可能な解決策。装飾として[UIHint( "LookupList")]を使用することもできます...すべてのボックスに目立ちます! – Martin

関連する問題