Помогите с ViewData asp.net mvc - PullRequest
0 голосов
/ 28 января 2010

На моей главной странице есть меню, в котором используется jquery ui accordion.

Как лучше всего указать, какой элемент должен быть активным? единственное, о чем я могу думать, это

$(document).ready(function() {
            $("#accordion").accordion({
                collapsible: true,
                autoHeight: false,
                active:<%=ViewData["active"] %>
            });          
        })

Но кажется немного повторяющимся необходимость устанавливать ViewData ["active"] каждый раз, когда View вызывается во всем моем приложении ... как вы думаете?

1 Ответ

0 голосов
/ 28 января 2010

Рассматривали ли вы включение аккордеона в PartialView? Затем вы помещаете свой код в PartialView и далеко от главной страницы.

Также вы можете иметь базовый контроллер, который может установить ViewData для вас, так что теперь он в одном месте.

Редактировать

Это так же, как и любой другой базовый класс. Ваш контроллер наследует от Controller, поэтому ваш базовый класс должен будет сделать то же самое;

using System.Web.Mvc;

namespace MyAppControllers
{
    public class ControllerBase : Controller
    {
        protected override void Execute(System.Web.Routing.RequestContext requestContext)
        {
            ViewData["ApplicationName"] = CacheHelper.Get().Name;
            base.Execute(requestContext);
        }
    }
}

Теперь установите ваш класс контроллера на наследование от класса ControllerBase;

public class HomeController : ControllerBase

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

...