我想從控制器動作傳遞兩個值到asp.net MVC 3 Razor視圖。我做這樣的行動方法:傳遞匿名對象來查看
var model = new { reportid = rid, refno = refernumber};
return View(model);
,但是當我嘗試訪問它,鑑於這樣的:
@Model.reportid
我得到的,對象不包含財產reportid
如何我可以傳遞多個值而不使用viewbag?
我想從控制器動作傳遞兩個值到asp.net MVC 3 Razor視圖。我做這樣的行動方法:傳遞匿名對象來查看
var model = new { reportid = rid, refno = refernumber};
return View(model);
,但是當我嘗試訪問它,鑑於這樣的:
@Model.reportid
我得到的,對象不包含財產reportid
如何我可以傳遞多個值而不使用viewbag?
那麼,我強烈建議你使用ViewModel類。但是,如果由於某種原因,你有額外的視圖模型類的恐懼,你可以使用一個叫做元組
var model = Tuple.Create(firstObject, secondObject)
,然後你的看法將是類型元組的C#的特徵,例如
@model Tuple<int, string>
和你可以像這樣訪問它們
@Model.Item1
然後你可以恭喜你自己,你已經取得了很好的隱藏含義:)
我喜歡的東西這麼醜怎麼可以這麼美:) –
您正在向視圖傳遞匿名對象,但匿名對象在它們被定義的程序集內部,因此您無法這樣做。
如果你不想定義自己的模型或使用ViewState和ViewBag,並仍然想使用匿名對象 - this後會對你有幫助。
完成此任務的另一種方法是使用ExpandoObject
。
dynamic model = new System.Dynamic.ExpandoObject();
model.reportid = 123
model.refno = 456;
設置視圖模型類型dynamic
:
@model dynamic
@Model.reportid
@Model.refno
使用viewbag或創建一個視圖模型 – RickAndMSFT