2012-05-06 19 views
0

MVCのイベントタイプの共通のドロップダウンリストを取得しようとしています。UIHint MVC共通ドロップダウンリスト

私は下の部分図を作成しました

共有/ EditorTemplates/

ここではその内容です:これは私がのための新しい部分図を作成する必要があるという事実を除いて、素晴らしい作品

@model EventManager.Models.CreateEventModel 

@{ 

    EventManager.Models.DropdownEventTypesModel dropdownList = new EventManager.Models.DropdownEventTypesModel(); 

    List<SelectListItem> types = dropdownList.EventTypes; 

    Html.DropDownListFor(model => model.Type, types); 

} 

この共通のドロップダウンを使用して目的を破りたいすべてのモデル。 C#MVCには、このモデルがこのTypeプロパティを持ちますが、それが来る特定のモデルは指定されていないと言う方法がありますか?

私は@modelダイナミックしようとしたが、それは、Visual Studioでこのエラーが返されました:

An expression tree may not contain a dynamic operation 

答えて

2

すべてを行う必要が部分的エディタテンプレートこのエディタがあるプロパティのタイプのモデルタイプを作成しています含まれるモデルのタイプではなく、編集されることになります。

public class CreateEventModel 
{ 
    //Other stuff here.... 
    public EventType TypeToCreate { get; set; } 
} 

public class EditEventModel 
{ 
    //Other stuff here.... 
    public EventType TypeToEdit { get; set; } 
} 

あなたはEventType.cshtmlという名前EditorTemplatesフォルダ内の部分を作成します。

あなたはEventTypeクラス、CreateEventModelEditEventModelを持っている、とCreateEventModelEditEventModelの両方が、このようなEventType性質を持っていると仮定します

@model EventManager.Models.EventType 

@{ 
    var types = //put whatever you need here to get the list of available types*; 
} 

@Html.DropDownListFor(m => m, types) 

お知らせDropDownListFor()の呼び出しでは、単純なメートル=> Mの発現、および事実:、およびそれにあなたはこのようなものを置きます@model宣言の型は単純にEventTypeです。すべてのエディタテンプレートは、EventType型のプロパティを編集するために使用されることを知る必要があります。

次のようにあなたのCreateEventModelEditEventModelのためのビューでこのテンプレートを利用することができます:

ビューを作成します。

@model EventManager.Models.CreateEventModel 

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 

@*Other stuff here...*@ 

@Html.EditorFor(m => m.TypeToCreate) 

編集ビュー:

@model EventManager.Models.EditEventModel 

@{ 
    ViewBag.Title = "Edit"; 
} 

<h2>Edit</h2> 

@*Other stuff here...*@ 

@Html.EditorFor(m => m.TypeToEdit) 

(*これに使用するコード:

EventManager.Models.DropdownEventTypesModel dropdownList = new EventManager.Models.DropdownEventTypesModel(); 

List<SelectListItem> types = dropdownList.EventTypes; 

は本当にビューに属していませんが、それは別の問題です)。

+0

これは、@ modelをEventTypeデータ型で使用することに本当に役立ちました。 @model intを使用して終了しましたか?どのビューでも一般的に使用できます。 –

関連する問題