Je tente de créer un menu global dans mon ASP.NET MVC site.master et je me demandais comment accéder à la propriété Paramètres de l'application à partir du site.master balisage? Auparavant, j'aurais probablement instancié un objet config à partir du code-behind de mon site.master, puis j'ai défini une propriété publique. Mais maintenant je me gratte la tête ... il me faut plus de café.Accès aux paramètres de l'application dans la vue ASP.NET MVC
mis à jour avec le code de réponse
Ajout d'une option de chaîne aux propererties d'application appelée baseurl et il a donné une valeur de "http://mysite.com"
Fait une classe de modèle de GlobalMenu.cs
public class GlobalMenu
{
private string _baseurl;
public string baseurl
{
get { return _baseurl; }
set
{
_baseurl = value;
}
}
}
Création d'une classe de contrôleur de base nommée BaseController et héritée de Controller, et étendue OnActionExecuted ainsi:
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);
}
Création une vue partielle appelée ViewGlobalMenu dans le dossier partagé qui a été fortement typé à Globalmenu qui ressemble à ceci ... mais avec plus de choses évidemment:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Web.Models.GlobalMenu>" %>
Enfin, dans Site.master I ajouté ceci à l'endroit où je voulais que le menu affiche:
<%Html.RenderPartial("ViewGlobalMenu", (MyApp.Web.Models.GlobalMenu)ViewData["menudata"]); %>
A travaillé comme un clin d'oeil ... merci! Ajouter mon exemple de code ci-dessus. – Webjedi
Jusqu'à ce que vous oubliez de dériver tous vos contrôleurs du contrôleur de base. Je suis actuellement en train de regarder une solution qui lit l'objet Properties dans un HttpModule ou un HttpHandler. – belugabob
@belugabob - c'est pourquoi nous testons. – tvanfosson