2008-09-15 173 views
1

我不得不使用ASP.NET MVC第三個預覽版(從預覽版2溶液升級)使用非類型化的ViewMasterPage像這樣一個工作的解決方案:ASP.NET MVC的ViewData(使用指數)

public partial class Home : ViewMasterPage 

回家的.master有一個顯示聲明是這樣的:

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

然而,在團隊的開發人員只是改變了程序集引用預覽4.

在此之後,該代碼將不再填充ViewData與索引值如上。

相反,ViewData [「Generic」]爲空。

根據this question,ViewData.Eval(「Generic」)有效,ViewData.Model也正確填充。

但是,這種解決方案不使用打印頁面等原因是因爲它是一種傳統的解決方案。因此,通過這個相當大的解決方案並更新所有.aspx頁面(特別是因爲編譯器沒有檢測到這種東西)是不切實際的。

我已經嘗試通過刪除引用,然後在項目的「bin」文件夾中添加對Preview 3程序集的引用來恢復程序集。這沒有改變任何東西。我甚至嘗試將項目文件還原到較早的版本,但仍似乎無法解決問題。

我有其他解決方案使用相同的技術,繼續工作。

有什麼可以建議的,爲什麼這個突然停止工作,我怎麼可能去修復它(任何暗示正確的方向將不勝感激)?

回答

1

我們做了這個改變,因爲我們想用[]索引器做一些對稱。 Eval()方法使用反射並查看模型以檢索值。索引器只查看直接添加到字典中的項目。

+0

好的,謝謝澄清。 – 2008-09-21 15:28:30

0

我決定用ViewData.Eval(「blah」)替換ViewData [「blah」]的所有實例。 不過,我想知道這種變化的原因,如果可能的,因爲:

  1. 如果它發生在我的其他項目它會是不錯的能夠解決。
  2. 這將是很好的離開部署的工作代碼,而不是覆蓋這些更改。
  3. 很高興知道沒有其他改變,我沒有注意到。
0

你是如何設置viewdata的?這個工作對我來說:

控制器:

ViewData["CategoryName"] = a.Name; 

查看:

<%= ViewData["CategoryName"] %> 

BTW,我是在第五個預覽版現在。但是,這已經工作3日和4 ...

0

回覆:瑞奇

我只是傳遞一個對象時,我打電話從控制器的視圖()方法。

我也注意到,在我沒有更新任何內容的部署服務器上,ViewData.Eval失敗,ViewData [「index」]工作。

在我的開發服務器計算機[「指數」]失敗,ViewData.Eval工程...

0

呀,所以不管你傳遞到視圖在查看ViewData.Model訪問。但是,如果你不做強類型的視圖,這將只是一個很好的舊對象...

+0

是的,我明白了。 問題是,ViewData [「等等」]停止設置,我想知道爲什麼(猜測MVC預覽4改變了這一點,但想確認)。 我想我也想知道爲什麼我似乎無法撤銷開發人員的參考更改 – 2008-09-15 23:28:48