2008-09-15 18 views
1

私はASP.NET MVCプレビュー3を使用して作業溶液を持っていた(プレビュー2溶液からアップグレードされました):ホームでASP.NET MVCのViewData(インデックスを使用して)

public partial class Home : ViewMasterPage 

このような表示文があります。管理組織のビー玉:

<%= ((GenericViewData)ViewData["Generic"]).Skin %> 

しかし、チームの開発者だけでこれに続いてプレビュー4.

にアセンブリ参照を変更し、コードはもはや移入しません上記のようなインデックス値を持つViewData

代わりに、ViewData ["Generic"]はnullです。

this questionによると、ViewData.Eval( "Generic")が動作し、ViewData.Modelも正しく読み込まれます。

しかし、このソリューションがタイプされたページなどを使用していない理由は、これが従来のソリューションの一種であるためです。このように、このかなり大きなソリューションを通過し、すべての.aspxページを更新することは実用的ではありません(特にコンパイラはこの種のものを検出しません)。

私は参照を削除し、プレビュー3アセンブリへの参照をプロジェクトの 'bin'フォルダに追加して、アセンブリを元に戻そうとしました。これは何も変わらなかった。私も以前のバージョンにプロジェクトファイルを元に戻そうとしたが、それでも問題を解決していないようだ。

私は、引き続き動作する同じテクニックを使用して、他のソリューションを持っています。

なぜこれが突然動作しなくなったのか、それを修正する方法を提案できますか(正しい方向のヒントがあれば分かります)?

答えて

1

私たちは[]インデクサーで少しの対称性が必要だったので、この変更を行いました。 Eval()メソッドはリフレクションを使用し、モデルを調べて値を取得します。インデクサは、辞書に直接追加された項目のみを参照します。

+0

これはclairfyingのおかげです。 –

0

私はViewData ["blah"]のすべてのインスタンスをViewData.Eval( "blah")に置き換えることに決めました。それは私の他のプロジェクトで発生した場合、修正することができてうれしいだろう

  1. :ので しかし、私は、可能な場合には、この変化の原因を知りたいのです。
  2. デプロイされた作業コードを残して、これらの変更を上書きしないことが良いでしょう。
  3. 私が気づいていないものは何も変わっていないことを知ってうれしいです。
0

どのようにビューデータを設定していますか?これは私の作品:

コントローラー:

ViewData["CategoryName"] = a.Name; 

ビュー:

<%= ViewData["CategoryName"] %> 

はところで、私は今、プレビュー5日午前。リッキー

私はコントローラからビュー()メソッドを呼び出したとき、私はちょうどオブジェクトを渡しています:しかし、これは3と4 ...

0

再に取り組んできました。

私はまた、何も更新されていない私の配備されたサーバーで、ViewData.Evalが失敗し、ViewData ["index"]が機能することに気付きました。

私の開発サーバのViewData [「インデックス」]失敗し、ViewData.Evalが作品を

...

0

うん、そう何でもビューに渡すには、ViewData.Modelとしてビューでアクセス可能です。しかし、厳密に型指定されたビューを実行しないと、それはちょうど良い古いオブジェクトになります...

+0

ええ、私はそれを取得します。 問題はViewData ["blah"]の設定が止まったことです。理由を知りたいと思いました(MVC Preview 4がこれを変更したと推測して確認したかったと思います)。 なぜ私は開発者のリファレンス変更を元に戻すことができないのだろうと思っていたと思います。 –

関連する問題