Ich versuche, ein globales Menü in meinem ASP.NET MVC-site.master zu erstellen, und ich frage mich, wie ich auf die Application Settings-Eigenschaft von Site.master zugreifen konnte Markup? Zuvor hätte ich wahrscheinlich ein Config-Objekt aus meinem Code-Behind von site.master instanziiert und dann eine öffentliche Eigenschaft festgelegt. Aber jetzt kratze ich am Kopf ... muss mehr Kaffee brauchen.Zugriff auf Anwendungseinstellungen in ASP.NET MVC-Ansicht
mit Antwortcode auf die Anwendung propererties genannt baseurl Einstellung
Added ein String AKTUALISIERT und gab ihm einen Wert von "http://mysite.com"
eine Modellklasse von GlobalMenu.cs
public class GlobalMenu
{
private string _baseurl;
public string baseurl
{
get { return _baseurl; }
set
{
_baseurl = value;
}
}
}
Hergestellt
Erstellt eine Basis-Controller-Klasse mit dem Namen BaseController und geerbt von Controller, und Overroad OnActionExecuted soly:
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);
}
eine Teilansicht genannt ViewGlobalMenu im freigegebenen Ordner erstellt, die stark an globalmenu eingegeben wurden, der so aussieht ... aber mit mehr Material offensichtlich:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Web.Models.GlobalMenu>" %>
schließlich in Site.Master I fügte hinzu, wo ich das Menü anzeigen wollte:
<%Html.RenderPartial("ViewGlobalMenu", (MyApp.Web.Models.GlobalMenu)ViewData["menudata"]); %>
Arbeitete wie ein Kinderspiel ... danke! Hinzufügen meines obigen Beispielcodes – Webjedi
Bis Sie vergessen, alle Ihre Controller vom Basiscontroller abzuleiten. Ich suche derzeit nach einer Lösung, die das Properties-Objekt in einem HttpModule oder HttpHandler liest. – belugabob
@belugabob - deshalb testen wir. – tvanfosson