我有一個(剃刀)頁面包含5個不同的局部視圖。每個部分視圖負責來自數據庫的一些數據。在該母版頁中,我使用了一個模型對象,但對於部分視圖,我使用了不同的模型對象。問題是,當我設置的局部視圖我的應用程序中斷與以下錯誤模型對象: 傳遞到字典的模型產品類型'MyProject.WebUI.Models.BigPageViewModel', but this dictionary requires a model item of type 'MyProject.WebUI.Models.StatisticsViewModel'.
部分視圖中不同模型類型的問題
下面是代碼: 這是包含部分景色的大頁面:
@model MyProject.WebUI.Models.BigPageViewModel
@{
Layout = "../Shared/_BigPage.cshtml";
}
...
@{Html.RenderPartial("../Data/StatisticsFeed");}
...
這是控制器代碼。對於此方法,我創建了應該在大頁面中呈現的部分視圖。
public ActionResult StatisticsFeed()
{
StatisticsViewModel cs = new StatisticsViewModel();
cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);
return View(cs);
}
而且這是在局部視圖代碼:
@model MyProject.WebUI.Models.StatisticsViewModel
...
我用「的RenderAction」的方法,而不是「的RenderPartial」,並將其返回值,但返回我兩個結果一個與數據和一個沒有,這一定是一些愚蠢的錯誤...
public ActionResult StatisticsFeed()
{
StatisticsViewModel cs = new StatisticsViewModel();
cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);
cs.TotalCitizns = 569;
return View(cs);
}
所以我需要在'bigPage'模型對象中有'統計'對象屬性? – 1110
@ 1110,yeap。那麼,您必須將'StatisticsViewModel'的實例傳遞給您的部分,因爲這是它所期望的。你存儲的地方是另一個問題。它確實可以是您的主視圖模型的一個屬性。你也可以傳遞一個新的實例:'new StatisticsViewModel()'。 –
如果我傳遞新對象,則該對象爲空。在我的問題的第二個代碼中,我填充具有該部分視圖數據的對象。當我在'bigPage'模型中有統計對象時,我的問題就解決了。所以我不能直接在局部視圖中注入控制器?因爲我擔心我的'bigPageViewModel'會太大。 – 1110