Состояние меню - ASP.Net MVC - PullRequest
       6

Состояние меню - ASP.Net MVC

2 голосов
/ 27 сентября 2010

В моем ASP.Net MVC View у меня есть меню. Меню состоит из нескольких родительских элементов с дочерними элементами (тегами привязки) внизу.

Я использую JQuery для переключения открытых и закрытых пунктов меню, когда пользователь нажимает на них.

К сожалению, как только пользователь нажимает на тег привязки и отправляется на другую страницу, состояние меню теряется, и меню снова закрывается.

Теперь, если бы это был "нормальный" ASP.Net, я бы вставлял информацию о состоянии меню в ViewState и сохранял информацию таким образом.

Возможно ли сделать что-то подобное в MVC ?? Это первый проект MVC, над которым я работал, так что будьте осторожны со мной!

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Итак, позвольте мне сначала убедиться, что я вас правильно понимаю.

Пользователь нажмет на пункт меню, который перенесет его на другую страницу. И когда он попадает на эту страницу, вы хотите, чтобы меню отражало тот факт, что он находится на этой странице? Правильно?

Это не слишком сложно. Я предполагаю, что меню является частичным представлением, поэтому вы должны отобразить его примерно так:

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

Таким образом, представление уже будет знать, какой пункт меню вызвал его. Например, если пользователь нажимает на Widgets-> New, вы можете вернуть представление NewWidget.aspx, и он будет знать, что выделенным элементом меню является Widgets-> New. Таким образом, вы просто используете перегрузку для RenderPartial , чтобы указать имя или идентификатор элемента меню для выделения.

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

Если это НЕ тот случай, когда представление уже знает, какой пункт меню выделить, вам нужно будет передать идентификатор пункта меню со ссылкой. Таким образом, ваша генерация ссылок будет выглядеть примерно так:

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

Тогда вашему действию нужно будет обработать этот параметр. Проще всего было бы взять параметр и добавить его в ViewData. Меню затем проверит в ViewData идентификатор для элемента MenuItem, который нужно выделить.

0 голосов
/ 27 сентября 2010

Может быть так: ASP.NET MVC - есть ли способ имитировать ViewState?

http://blog.maartenballiauw.be/post/2009/10/08/Leveraging-ASPNET-MVC-2-futures-ViewState.aspx
http://forums.asp.net/t/1285163.aspx

и это можетСправка тоже

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

В MVC есть много статей о состояниях просмотра, и, поскольку вы новичок в этом, возможно, некоторые предварительные чтения будут полезны и даже могут ответить на ваши вопросы.вопросы!

Удачи!

...