2011-07-10 15 views
0

モデルがあります。ASP .NET MVC 3:EditorTemplateで汎用ビューモデルを使用する方法

public class MyModel 
{ 
    public SubModel<float> prop1 { get; set; } 
    public SubModel<int?> prop2 { get; set; } 
    public SubModel<string> prop3 { get; set; } 
} 

私はViewを持っています。

@model MyModel 

@{ 

    using (Html.BeginForm("Edited", "My", FormMethod.Post)) 
    { 
     @Html.EditorFor(m => m.prop1,"SubModel") 
     @Html.EditorFor(m => m.prop2,"SubModel") 
     @Html.EditorFor(m => m.prop3,"SubModel") 
    } 
} 

と私はEditorTemplatesでSubmodel.cshtmlを書きたいが、私は書くことはできません。

@model SubModel<T> 

私は何をすべき、以外にも各タイプの3つのビューを作成しますか?

答えて

0

公開されているジェネリックテンプレートは厳密に型指定することはできません。

だからdynamicを使用することができます。

@model dynamic 

またはobject

@model object 

が、両方のケースでは、あなたは正しい型を決定するために、醜いifs内部を記述する必要があります。このため、それぞれのタイプごとに異なるテンプレートを作成し、フレームワークに正しいテンプレートを選択させることをお勧めします。

+0

'@model SubModel 'を使って 'DateTime? prop4'を表示しますが、例外があります:辞書に渡されるモデル項目は 'SubModel'1 [System.Nullable'1 [System.DateTime]]'型ですが、この辞書は 'SubModel'型のモデル項目を必要とします1 [System.Object] '。 – kipwoker

関連する問題