2011-01-25 12 views
0

Asp.net MVC2:私はmvcアプリケーションに多くのドロップダウンリストを持っています。最初は、ユニークなIDと名前でそれぞれのテーブルを作成し、コントローラとビューで参照していました。アプリケーションが大きくなったので、lookuptypeとlookupvalueが複合主キーとして含まれているルックアップテーブルを使用し、その中のドロップダウンリストのすべての値を入力することをお勧めしました。私はインターネット上のすべてを見てきました、mvcのために使用される唯一の方法は、各ドロップダウンリストの1つのテーブルです!誰かが私にそれを実装する方法を説明することができます、そして詳細に私は完全に失われているbecozしてください。チュートリアルへのリンクも素晴らしいでしょう。 私はvb.netとlinqをSQLに使用しています。mvcフレームワークでルックアップテーブルを実装する方法は?

+0

既存のテーブルのいずれかに列を提供できますか? ID、名前、価値なのですか? –

答えて

0

私は実際にやや異なるアプローチを使用しました。私は複合主キー、LookupNameとLookupValueを持つテーブルを作成しました。次にdatacontextで、私はパラメータとしてlookupnameを取るメソッドを宣言し、lookupnameがこのパラメータと一致するlookupvaluesのリストを返します。元のテーブル(ex.Contact)では、statusと呼ばれるフィールドを作成しました。ここでは、選択した値が保存されます。次に、コントローラでは、ビューデータを使用してドロップダウンリストを作成しました。

例:_dbは

ViewDataを( 'ステータス')新しいSelectListの(_db.Getlookupname( 'ステータス')、 'lookupname'、 'lookupname')=のDataContextを表し

と、ビューで

html.dropdownlist(「ステータス」)

私はまた、ターゲット表「コンタクト」で発見されているのと同じフィールド名「ステータス」でドロップダウンリストの名前。

それはどんな複雑さやエラーもなく機能しました。 助けてくれてありがとう。そして、これが他の誰かに役立つことを願っています!

0

テーブルに列ID,NameValueがあるとします。今度はテーブルが1つしかなくても、このテーブルはほとんど同じように見えるでしょう:

create table Lookup 
(
    LookupID int not null identity 
     primary key, 
    LookupTypeID int not null 
     references LookupType(LookupTypeID), 
    Name nvarchar(50) not null, 
    Value int not null, 
    unique(EnumTypeID, Name) 
) 
go 

このテーブルは、同じタイプの名前が衝突しないようにします。

とにかく。もちろん、あなたが特定の型の値を取得するたびにあなたは常にそれらのIList<EnumValue>を生成することができますし、ダウン特定の低下にそれらを養う同様のアプリケーション(データではなく)モデルクラス

public class EnumValue 
{ 
    public int Id { get; set; } 

    [Required] 
    public string Name { get; set; } 

    [Required] 
    public int Value { get; set; } 
} 

を持つことができます。

貴重なデータを提供していないので、このテーブルとクラスでは、内側の動作によっては全く必要ない場合があるので、列/プロパティーValueを省略することができます。しかし、アプリケーションの要件を知っているので、これを最もよく知ることができます。この列/プロパティの代わりに、IDだけがトリックを行うことができます。

+0

返信ありがとうございます。この問題はどうですか?どうぞご覧ください。事前に感謝... http://stackoverflow.com/questions/29333787/how-to-create-lookup-table-and-define-relationships –

関連する問題