在我的ASP.Net MVC視圖中,我有一個菜單。該菜單由許多父項目組成,子項目(錨標籤)位於下方。菜單狀態 - ASP.Net MVC
我正在使用JQuery切換菜單項打開和關閉,因爲用戶點擊它們。
不幸的是,一旦用戶點擊一個錨標籤並被髮送到另一個頁面,菜單狀態就會丟失,菜單又回到關閉狀態。
現在,如果這是「正常的」ASP.Net我會堅持菜單狀態信息到ViewState,並存儲信息的方式。
是否有可能在MVC中做類似的事情?這是我工作過的第一個MVC項目,所以請和我一起溫柔!
在我的ASP.Net MVC視圖中,我有一個菜單。該菜單由許多父項目組成,子項目(錨標籤)位於下方。菜單狀態 - ASP.Net MVC
我正在使用JQuery切換菜單項打開和關閉,因爲用戶點擊它們。
不幸的是,一旦用戶點擊一個錨標籤並被髮送到另一個頁面,菜單狀態就會丟失,菜單又回到關閉狀態。
現在,如果這是「正常的」ASP.Net我會堅持菜單狀態信息到ViewState,並存儲信息的方式。
是否有可能在MVC中做類似的事情?這是我工作過的第一個MVC項目,所以請和我一起溫柔!
因此,讓我先確保我正確理解你。
用戶將點擊一個菜單項,這會將他帶到另一個頁面。當他到達該頁面時,您想要菜單反映他在該頁面上的事實?正確?
這聽起來不太複雜。我以爲菜單是一個局部視圖 - 這樣你會使它是這樣的:
<div id="menu">
<% Html.RenderPartial("Menu"); %>
</div>
這樣的觀點就已經知道哪個菜單項觸發它。例如,如果用戶點擊Widgets-> New,則可能會返回NewWidget.aspx視圖,並且它會知道要突出顯示的菜單項是Widgets-> New。因此,您只需使用overload for RenderPartial指定要突出顯示的菜單項的名稱或ID。
<div id="menu">
<% Html.RenderPartial("Menu", "newWidgetLink"); %>
</div>
如果它不是一個視圖已經知道要突出哪一個菜單項的情況下,你將需要通過菜單項的ID與聯繫。所以你的鏈接世代看起來是這樣的:
Html.ActionLink("Menu Item Text",
"Controller name goes here",
"Action name goes here",
new { menuItem = "menuItemId goes here" },
null
)
然後你的動作將需要處理這個參數。最簡單的方法是取參數並將其添加到ViewData中。然後菜單將檢查ViewData中MenuItem的ID以突出顯示。
也許這:ASP.NET MVC - Is there a way to simulate a ViewState?
http://blog.maartenballiauw.be/post/2009/10/08/Leveraging-ASPNET-MVC-2-futures-ViewState.aspx
http://forums.asp.net/t/1285163.aspx
,這可能幫助過
有很多的MVC因爲你即將視圖狀態文章新的這個也許一些預讀會很方便,甚至可以回答你即將到來的問題!
祝你好運!
如果我們仍然想要激發視圖狀態,那麼來到mvc有什麼意義呢? – 2010-09-27 19:24:15
我想知道同樣的事情,所以不要問我,我不是那個問這個問題的人。如果你喜歡,你可以發表評論的問題... – EKet 2010-09-27 19:39:53
說實話,我真的不想模擬ViewState。我之所以發佈是因爲我想發現人們在像MVC這樣的「無狀態」環境中如何做這種事情。當我稍後有機會時,我會編輯這個問題,讓事情變得更加清晰! – NeilD 2010-09-28 14:05:04