如標題,以下敘述狀況--
View : Index.cshtml
PartialView : _TestReport.cshtml
以及_Summary.cshtml
在Index.cshtml
得到物件Report1
,Report1
這個物件裡面分別有ReportInformation
及Summary
請問要如何做到將Report1.ReportInformation
傳給_TestReport.cshtml
;將Report1.Summary
傳給_Summary.cshtml
目前若使用ViewBag的方式是可行的,但記得可以直接在@Html.Partial("_TestReport", )
逗號後面直接帶入傳入的東西,但網路上看到的都是使用model,請問若要使用dynamic的model要如何達到呢?
Index.cshtml
@using Multiverse.Data;
@using Newtonsoft.Json;
@{
ViewBag.Title = "Index";
var Report1 = Subject.FindInstances("Report").Cast<dynamic>().First(x => "A123"==(x.ReportInformation)?.ReportNumber);
ViewBag.TestReport1 = Report1.ReportInformation;
}
<h2></h2>
@Html.Partial("_TestReport")
@Html.Partial("_Summary")
_TestReport.cshtml
@using Multiverse.Data;
@using Newtonsoft.Json;
@{
var row = ViewBag.TestReport;
}
<div> @(row.ReportNumber) </div>
你可試試看ViewData,但我覺得這樣跟用ViewBag沒太大差異~XDDD
@Html.Partial("_TestReport", Model, new ViewDataDictionary { { "TestReport1", Report1.ReportInformation } })
不過通常還是建議使用Model啦,
既然都已經做Partial了,
不就是為了放上對應的ViewModel嗎?
還是有什麼其他考量呢?
因為我們的資料庫不是關聯式資料庫,而且我的View的部分只是將資料撈出做呈現,所以可以直接從View下手。
謝謝你的幫忙,不過想嘗試看看能不能透過一個什麼方式直接從@Html.Partial(_partialView,)的,後面直接傳遞物件
其實不管哪一種類型的DataBase,應該都不會影響到您將它轉為Model啦,您可以試著自己建看看~XDD
另外,您如果是要後面直接傳遞物件,不傳Model的話,您可以使用另外一個多載
@Html.Partial("_TestReport", new ViewDataDictionary { { "TestReport1", Report1.ReportInformation } })
然後在TestReport.cshtml的地方直接
ViewData["TestReport1"]
就可以取到值了
您提到的兩個做法,我都嘗試使用,謝謝~
另外,或許您會知道直接在View上宣告dynamic的model的作法嗎?
google了一下:http://blogs.quovantis.com/dynamic-models-for-mvc-view/
不過我通常還是比較嚴格的用ViewModel。
直接在TestReport.cshtml加入
@model dynamic
不過我自己沒有試過,
不行的話可能要Google看看~
我一般是從Controller傳ViewBag或Model到前端,Index. html和Partial都可以接收到