2011-11-02 14 views
8

コントローラアクションからasp.net MVC 3剃刀ビューに2つの値を渡したいと思います。私はアクションメソッドでは、次のようにやっている:匿名オブジェクトを表示に渡す

var model = new { reportid = rid, refno = refernumber}; 
return View(model); 

しかし、私は、このようなビューでそれにアクセスしよう:

@Model.reportid 

私が取得、オブジェクトは、プロパティが含まれていません

方法をreportid私はビューバックを使用せずに複数の値を渡すことはできますか?

+0

viewbagを使用するか、ViewModelに – RickAndMSFT

答えて

15

さて、ViewModelクラスを使用することを強くお勧めします。何らかの理由であなたが余分のviewmodelクラスの恐怖症を持っている場合しかし、あなたは

@model Tuple<int, string> 

、あなた例えば、タプル

var model = Tuple.Create(firstObject, secondObject) 

、その後、あなたのビューはタイプタプルのものであろうと呼ばれるC#の機能を使用することができます

@Model.Item1 

そして、あなたはあなたに隠された意味で素晴らしい混乱を達成しました:)

+1

を作成する:) –

3

匿名オブジェクトをビューに渡していますが、匿名オブジェクトは定義されているアセンブリの内部にあるため、そのようにすることはできません。

独自のモデルを定義したくない場合や、ViewStateとViewBagを使用する場合でも、匿名オブジェクトを使用したい場合は、this投稿が役立ちます。

2

このタスクを実行する別の方法は、ExpandoObjectを使用することです。 dynamicにビューモデルのタイプを設定し

dynamic model = new System.Dynamic.ExpandoObject(); 
model.reportid = 123 
model.refno = 456; 

:私は醜い何かがとても美しいことができますどのように愛する

@model dynamic 

@Model.reportid 
@Model.refno 
関連する問題