2016-12-30 75 views
0

在cshtml代碼頭中,我用一些數據實例化了一個viewmodel。我可以綁定到並顯示父視圖中該視圖模型變量的數據。但是,當我將viewmodel變量傳遞給子部分視圖時,頁面上不顯示任何內容。部分視圖不顯示,但其視圖模型適用於父項

@{ 
    Html.Partial("DailyReport", @DailyReportViewModel); 
} 

任何想法爲什麼子部分視圖不會顯示在頁面上或如何調試此問題?

回答

2

因爲您正在調用Partial方法,該方法返回MvcHtmlString,但您沒有使用該方法的返回值。

你可以做到這一點,而不是

@Html.Partial("DailyReport", @DailyReportViewModel); 

剃刀現在將呈現來自DailyReport方法的返回值。

或者您可以使用呈現結果的RenderPartial方法。

@{ 
    Html.RenderPartial("DailyReport", DailyReportViewModel); 
} 

假設DailyReportViewModelT類型到您的局部視圖是強類型到的對象。

+0

DailyReport是部分視圖的名稱而不是方法的名稱 – user7242966

+0

我什麼時候說它是方法的名稱? – Shyju

+0

@ user7242966,如Shyju所示,「at {}」語法創建了一個類似於函數的代碼塊。 Html.Partial是一個快捷方式,您可以使用「at {}」塊外的*外部來爲您節省一些麻煩。在「at {}」塊外使用(at)Html.Partial。如果你想在裏面使用它,請按照Shyju的建議使用Html.RenderPartial。對評論中SO的「at」限制感到抱歉。 – Markus

0

@在前面並從DailyReportViewModel@,它應該工作。

@Html.Partial("DailyReport", DailyReportViewModel); 
+0

當用@ @ DailyReportViewModel執行代碼時(如他的問題),Razor會簡單地忽略「@」。當你刪除這個('@')時,這個方法的輸出沒有區別。問題是,他沒有使用方法的返回值。 – Shyju

+0

對不起,我打算說,要刪除那個,並在我的回答中放置在前面。 – CodingYoshi