我有兩個完全相同的部分視圖,但對於@model。MVC3將@model傳遞給局部視圖
@model Project.Models.X
@model Project.Models.Y
我怎麼能這種模式類型傳遞給視圖,以便我可以使用兩個相同的看法?
我有兩個完全相同的部分視圖,但對於@model。MVC3將@model傳遞給局部視圖
@model Project.Models.X
@model Project.Models.Y
我怎麼能這種模式類型傳遞給視圖,以便我可以使用兩個相同的看法?
您可以創建一個傳遞給View的ViewModel Z. 如果您想傳遞模型X或Y,只需將它傳遞給Z,然後將模型Z傳遞給View。
使這兩個類都實現相同的接口,並將接口用作模型。按照Tim的建議:如果可能的話,你也可以從同一個基類繼承。雖然這並非總是可行,但使用界面方法大多可能。
大多像gandil:創建一個ViewModel Z,但使用Automapper從Y和X映射。這樣可以保持您的UI模型乾淨和乾燥。
不知道這是最好的做法,但你也可以使用HTML.RenderAction打電話給你的控制器,並使其返回與任何你想要的模型PartialViewResult,像這樣:
@{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });}
和
public PartialViewResult MyPartialAction(int? someID)
{
return PartialView("MyPartial",SomeModel);
}
...或基類。 –