2012-05-29 61 views
0

我有一個控制器的方法,它返回一個局部視圖並生成ViewData。然後,我有一些方法,他們每個人都返回Json對象和ViewData。但是,ViewData沒有被刷新。如何刷新它?這可能嗎?但是,雖然SomeMethod()在FirstMethod()之後被調用,但我在視圖中使用的ViewData是someList。刷新ViewData的方法返回Json

+0

你能發表一些代碼嗎? – VJAI

+0

@Mark是的。我編輯了這個問題。 –

+0

ViewData將按照@Darin的說明在每個請求中清除,您不需要手動執行該操作。通常,每個操作(除非它是一個子操作)對應於瀏覽器請求。所以如果你在一個動作中爲ViewData設置了一些值,它將不能在其他地方使用。 – VJAI

回答

2

這可能嗎?

不,這是不可能的。 ViewData是一個弱類型的字典,可以用來傳遞控制器和視圖之間的信息(儘管我不推薦使用它)。它的生命週期與控制器動作執行管道的生命週期相關聯。所以一旦視圖渲染完成就結束了。沒有控制器,視圖,ViewData,...存在了。只有在客戶端瀏覽器中呈現的HTML。

然後您再次向服務器發送一個AJAX請求。這是完全新的請求,與第一個請求無關(最初用於呈現視圖),因此使用自己的ViewData創建控制器的新實例。在返回JSON的控制器操作中設置ViewData是無用的,因爲由於此操作將與javascript一起調用,所以要從控制器傳遞到javascript成功處理程序的所有信息必須是您返回的JSON對象的一部分。

+0

你爲什麼不推薦使用ViewData? –

+1

因爲它的輸入很弱。我建議使用視圖模型。 –