2011-08-16 78 views
1

我有2個Cotrollers。 第一個像這樣設置ViewData屬性 ViewData [「Error」] =「something」; 我可以在頁面上顯示此消息。 第二個控制器加載網格。 當我嘗試從Cotroller中設置ViewData屬性時,它不會顯示在頁面上。ViewData在ASP.NET MVC 3

你是爲什麼?我在這裏做錯了什麼?

請讓我知道。

謝謝!

+0

將模型傳回控制器。 –

+0

我想從網格控制器的頁面上顯示的東西。所以我在ViewData中設置了一些東西,所以我可以在頁面上顯示它。這不起作用。 –

回答

1

對單個視圖使用兩個控制器是一個禁忌。

查看ViewModels以將所有必需的數據傳遞到您的視圖。然後,您可以爲網格創建一個PartialView,並將必要的模型傳遞給部分視圖。當ViewModel不起作用時,考慮ViewData/ViewBag是最後的手段。

+0

那你爲什麼要問兩個控制器? –

+0

這就是我整個頁面的樣子。3文本框,1個文件輸入,1個提交Btn,1個Telerik網格。用戶輸入值到文本框中並選擇要導入的1個文件。提交按鈕需要這4件事,讀取文件並用4個參數調用WCF服務。 (TXT1,TXT2,TXT3,FILDATA)。 WCF返回一個XML文件。我將它保存在磁盤臨時位置上。這一切都發生在1個控制器事件中。現在網格事件被調用,它解析文件並在網格中顯示結果。在這裏,我想在ViewData中添加一些值,並希望在頁面上顯示該消息。 –

0

您是否試圖使用兩個單獨的控制器來呈現相同的視圖?如果是這樣的話,你應該考慮一下,把你的「網格」的視圖邏輯打破成一個局部視圖,然後在你的主視圖中進行渲染。

正如您所提到的「查看數據」兩次,另一個需要考慮的項目是執行ViewModel Pattern。 Viewdata字典方法快速且相當容易實現。但是,它不是類型安全的,並且由於錯字造成的錯誤不會在編譯時被捕獲。