2011-07-10 33 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; } 
} 

而且我有查看。

@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") 
    } 
} 

,我希望寫在Submodel.cshtml EditorTemplates,但我不能寫:

@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