开发者

Menu State - ASP.Net MVC

开发者 https://www.devze.com 2023-01-17 15:07 出处:网络
In my ASP.Net MVC View, I have a menu. The menu consists of a number of Parent Items, with Child Items (anchor tags) underneath.

In my ASP.Net MVC View, I have a menu. The menu consists of a number of Parent Items, with Child Items (anchor tags) underneath.

I'm using JQuery to toggle the menu items opened and closed, as the user clicks on them.

Unfortunately, once the user clicks onto an anchor tag, and gets sent to another page, the menu state is lost, and the menus go back to being closed.

Now if this was "normal" ASP.Net I'd be sticking the menu state information into the ViewState, and storing the information that way.

开发者_如何转开发

Is it possible to do something similar in MVC?? This is the first MVC project that I've worked on, so go gentle with me!


So let me first make sure I understand you correctly.

The user will click on a menuitem, which will take him to another page. And when he gets to that page you want the menu to reflect the fact that he is on that page? Correct?

This doesn't sound too tricky. I assume the menu is a partial view - so you would render it something like this:

<div id="menu">
  <% Html.RenderPartial("Menu"); %>
</div> 

So the view will already know which menu item triggered it. For example, if the user clicks on Widgets->New, you might return the NewWidget.aspx view, and it will know that the Menu item to highlight is Widgets->New. So you simply use the overload for RenderPartial to specify the name or id of the menu item to highlight.

<div id="menu">
  <% Html.RenderPartial("Menu", "newWidgetLink"); %>
</div> 

If it is NOT the case that a view already knows which Menu Item to highlight, you will need to pass the id of the menu item with the link. So your link generation will look something like this:

Html.ActionLink("Menu Item Text", 
                "Controller name goes here",
                "Action name goes here",
                new { menuItem = "menuItemId goes here" },
                null
                )

Then your action will need to handle this parameter. Easiest would be to take the parameter and add it to the ViewData. The Menu will then check in the ViewData for the Id of the MenuItem to highlight.


Maybe this: 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

and this might help too

http://webcache.googleusercontent.com/search?q=cache:y26JBxHjbBUJ:www.beansoftware.com/ASP.NET-Tutorials/Intro-ASP.NET-MVC.aspx+how+does+mvc+save+view+state&cd=8&hl=en&ct=clnk&gl=us

There are a lot of articles about view states in MVC and since you're new to this perhaps some pre-reading would be handy and may even answer your upcoming questions!

Good luck!

0

精彩评论

暂无评论...
验证码 换一张
取 消