2012-03-07 21 views
2

私はdifferenetモデル(エンティティ)から複数のフィールドを取得する検索ページを開発します。また、同じ画面に複数のDropDownListがあり、その値はルックアップテーブルから取り込まれます。複数のモデルとルックアップテーブルを持つMVC3検索画面

私は(このシナリオでは)最善のアプローチを知りたいと思います。 ViewModelを作成し、そのモデルをビューに渡す必要がありますか?あるいは私は別のアプローチが必要ですか?

しかし、ルックアップテーブルからデータを取り込むドロップダウンフィールドをどのように処理すればよいか分かりません。

また、ページを送信する際に、次の検索の詳細画面でこれらの値を取得して、すべてのレコードをdbから取得する必要がありますか?私は

答えて

1

必要なプロパティ(検索条件)を持つViewModelを使用することができます。 検索にHttpGetアクションを実行すると、ルックアップテーブルからすべてのデータが読み込まれ、プロパティ(例:Statesなど)に読み込まれます。

public ActionResult Search() 
    { 
    SearchViewModel objVM=new SearchViewModel(); 
    objVM.States=MyService.GetStates(); 
    objVM.Type=MyService.GetUserTypes();  
    return objVM.  
    } 

    [HttpPost] 
    public ActionResult Search(SearchViewModel objVM) 
    { 
     if(ModelState.IsValid) 
     { 
     //Go for the search and return results 

     } 
     return View(objVm); 
    } 
+0

私は、必要な検索プロパティのみを使用してビューモデルを作成します。それは私のビューモデルで私のモデル全体のプロパティを参照する必要はないことを意味します。 –

+0

もう1つのことは、結果を検索しながら、私は最初に外部データベースでいくつかのキーフィールドを検索する必要がある場合は、現在のDBでフィールド全体を検索します。私の質問は、私はすでに検索条件のために利用可能なクエリを持っています、私は自分のEFでそのクエリを使用できますか?これを実現するためのサンプルやリンクがありますか? –

+0

@PrasantaBiswal:はい、検索フォームで任意のフィールドをプロパティとして使用します。 – Shyju

1

EF 4.2でMVC3を使用しています

は絶対に、最善のアプローチはViewModelにを使用することが間違いです。このような何かは十分であろう:

public class Model1 
{ 
    public string Prop1 { get; set; } 
} 

public class Model2 
{ 
    public string Prop2 { get; set; } 
} 

public class ViewModel1 
{ 
    public Model1 Model1 { get; set; } 
    public Model2 Model2 { get; set; } 
    public SelectList DropDownItems { get; set; } 
} 

あなたが表示するには、このビューモデルを渡します、あなたのコントローラのアクションメソッドでSelectListItemオブジェクトの量とSelectListを投入したいです。

関連する問題