2016-01-03 90 views

回答

0

我真的不建議這樣做,因爲視圖與模型耦合。我希望你有兩個非常相似的模型,但是你仍然需要在一個模型中放置不同的屬性,而不是另一個模型中的屬性,以及修改這個視圖可能導致超過一個問題的問題一個地區。

你可以做到這一點,如果兩者你的模型從相同的基本繼承:

public class ModelBase 
{ 
    public string SharedProperty { get; set; } 
} 
public class ModelA : ModelBase 
{ 
    public string AProp { get; set; } 
} 
public class ModelB : ModelBase 
{ 
    public string BProp { get; set; } 
} 

然後在您的視圖中使用該基地,其中所需要的模式和投:

@model ModelBase 

@if (Model.GetType() == typeof(ModelA)) 
{ 
    @Html.EditorFor(m => ((ModelA)m).AProp) 
} 

你也需要接受ModelBase並投入控制器:

public ActionResult SomeAction(ModelBase model) 
{ 
    bool modA = model.GetType() == typeof(ModelA); 
    string a = modA ? ((ModelA)model).PropA : ""; 
} 

但是,這又會導致我ssy代碼!