1

我在.Net 4.0中使用VS2010中的MVC2。我有一種情況,我將有一大堆部分視圖,我需要都有相同的模板。基本上我需要他們都包含相同的DIV(和其他垃圾)。我只想要一個地方來改變這個DIV ......所以我使用了一個母版頁。它的效果很好,所有的局部視圖都使用這個主人,如果我需要改變一些沒有問題的東西。需要訪問MasterPage上的ViewData ...或其他選項

問題空間:我需要有一些該視圖特定的數據,在這種情況下,記錄了該ID的視圖顯示,在的ID的DIV中。現在我知道我可以創建另一個佔位符,但我需要這個ID將在10個地方,而不是1

<div id="<%: ViewObjectId %>"> 
    <asp:contentplaceholder id="ViewStuff" runat="server"/> 
</div> 

我試圖將ID添加到ViewData的,但它似乎在MVC2的ViewData的是在行動中失蹤。

我可以創建一個調用子視圖父行動,但這個問題是它有我想要的任何參數的靈活性帶走......所有意見必須使用相同的簽名。

任何想法或建議?

回答

1

不確定你的意思是「但是它看起來在MVC2中ViewData缺少動作。」 ViewData在那裏,應該爲你想要的工作。但是,如果您需要,您必須以ViewData["ViewObjectId"]的身份訪問它。

如果這不起作用,您可以發佈代碼示例以顯示您如何設置ViewData值?

+0

那麼,如果我把在此代碼給主頁時,得到下面的錯誤: <標籤ID = 「<%:(GUID)計算機[」 ID 「]%>」> 錯誤名稱'ViewData'在當前上下文中不存在 – CrazyDart 2010-07-23 16:51:47

+1

好吧,從來沒有想過。神祕感解決了。當我創建一個新的母版頁時,它創建了一個Web Forms母版,而不是一個MVC版本...仍然有效。它並沒有繼承System.Web.Mvc.ViewMasterPage,而是它自己的代碼隱藏。所以我改變了頂部標籤並刪除了代碼隱藏,並且更好。 :-) – CrazyDart 2010-07-23 20:31:57

+0

恭喜!我想過提示,但後來認爲我會等待看到你的代碼。這是一個容易犯的錯誤。很高興你把事情解決了。 :) – 2010-07-25 08:49:37