Доступ к настройкам приложения в представлении ASP.NET MVC - PullRequest
2 голосов
/ 07 мая 2009

Я пытаюсь встроить глобальное меню в свой 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"]); %>

Ответы [ 2 ]

1 голос
/ 07 мая 2009

Вот стратегия, которую я бы, вероятно, использовал. Создайте базовый контроллер, из которого будет производиться ваш другой контроллер, и получите его от контроллера. Переопределите метод ActionExecuted в базовом контроллере и получите доступ к настройкам приложения (и, возможно, кешируйте их). Сгенерируйте ViewData для вашего меню как строго типизированный класс модели меню, назначенный определенной клавише в ViewData. Вам нужно только предоставить модель для действий, которые возвращают ViewResult (и, возможно, PartialViewResults).

Создание строго типизированного частичного представления, которое реализует глобальную разметку меню с использованием класса модели меню. Включите это в определение MasterPage через RenderPartial. Передайте элемент ViewData, соответствующий ключу в качестве модели, частичному представлению, чтобы вы могли использовать свойства модели в вашем меню.

0 голосов
/ 12 сентября 2018

Это должно сделать трюк из вида ->

@System.Configuration.ConfigurationManager.AppSettings["AppSetting"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...