Я пытаюсь встроить глобальное меню в свой ASP.NET MVC site.master, и мне было интересно, как я могу получить доступ к свойству параметров приложения из разметки site.master? Ранее я, вероятно, мог бы создать экземпляр объекта конфигурации из кода моего site.master, а затем установить публичное свойство. Но сейчас я чешу голову ... нужно еще кофе.
ОБНОВЛЕНО кодом ответа
Добавил строковый параметр в свойства приложения, называемый baseurl, и присвоил ему значение "http://mysite.com"
Сделан модельный класс GlobalMenu.cs
public class GlobalMenu
{
private string _baseurl;
public string baseurl
{
get { return _baseurl; }
set
{
_baseurl = value;
}
}
}
Создан базовый класс контроллеров с именем BaseController, унаследованный от Controller, и переопределение OnActionExecuted таким образом:
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
string baseurl = Properties.Settings.Default.baseurl;
GlobalMenu menumodel = new GlobalMenu();
menumodel.baseurl = baseurl;
ViewData["menudata"] = menumodel;
base.OnActionExecuted(filterContext);
}
Создал частичное представление с именем ViewGlobalMenu в общей папке, которое было строго напечатано в GlobalMenu, которое выглядит следующим образом ... но с большим количеством вещей, очевидно:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Web.Models.GlobalMenu>" %>
Наконец, в Site.Master я добавил это туда, где я хотел, чтобы меню показывало:
<%Html.RenderPartial("ViewGlobalMenu", (MyApp.Web.Models.GlobalMenu)ViewData["menudata"]); %>