在cshtml代碼頭中,我用一些數據實例化了一個viewmodel。我可以綁定到並顯示父視圖中該視圖模型變量的數據。但是,當我將viewmodel變量傳遞給子部分視圖時,頁面上不顯示任何內容。部分視圖不顯示,但其視圖模型適用於父項
@{
Html.Partial("DailyReport", @DailyReportViewModel);
}
任何想法爲什麼子部分視圖不會顯示在頁面上或如何調試此問題?
在cshtml代碼頭中,我用一些數據實例化了一個viewmodel。我可以綁定到並顯示父視圖中該視圖模型變量的數據。但是,當我將viewmodel變量傳遞給子部分視圖時,頁面上不顯示任何內容。部分視圖不顯示,但其視圖模型適用於父項
@{
Html.Partial("DailyReport", @DailyReportViewModel);
}
任何想法爲什麼子部分視圖不會顯示在頁面上或如何調試此問題?
因爲您正在調用Partial
方法,該方法返回MvcHtmlString
,但您沒有使用該方法的返回值。
你可以做到這一點,而不是
@Html.Partial("DailyReport", @DailyReportViewModel);
剃刀現在將呈現來自DailyReport
方法的返回值。
或者您可以使用呈現結果的RenderPartial
方法。
@{
Html.RenderPartial("DailyReport", DailyReportViewModel);
}
假設DailyReportViewModel
是T
類型到您的局部視圖是強類型到的對象。
把@
在前面並從DailyReportViewModel
的@
,它應該工作。
@Html.Partial("DailyReport", DailyReportViewModel);
當用@ @ DailyReportViewModel執行代碼時(如他的問題),Razor會簡單地忽略「@」。當你刪除這個('@')時,這個方法的輸出沒有區別。問題是,他沒有使用方法的返回值。 – Shyju
對不起,我打算說,要刪除那個,並在我的回答中放置在前面。 – CodingYoshi
DailyReport是部分視圖的名稱而不是方法的名稱 – user7242966
我什麼時候說它是方法的名稱? – Shyju
@ user7242966,如Shyju所示,「at {}」語法創建了一個類似於函數的代碼塊。 Html.Partial是一個快捷方式,您可以使用「at {}」塊外的*外部來爲您節省一些麻煩。在「at {}」塊外使用(at)Html.Partial。如果你想在裏面使用它,請按照Shyju的建議使用Html.RenderPartial。對評論中SO的「at」限制感到抱歉。 – Markus