J'utilise une vue partielle sur deux pages distinctes et la vue partielle utilise des métadonnées pour obtenir les noms d'affichage sous la forme d'attributs sur le modèle (la façon standard de faire des métadonnées).MVC2 trouver zone/contrôleur/action depuis l'attribut personnalisé
Je dois rendre le nom d'affichage sensible au contexte en fonction de la page. Pour cela, j'étend le System.ComponentModel.DisplayNameAttribute et je passe dans un tableau de zone/controller/action/resourcefile/resourcestring pour que je puisse choisir la chaîne de ressources correcte en fonction du contexte.
Mon problème est de savoir comment puis-je obtenir la zone/contrôleur/action à partir de ce qui suit:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CommonInterfaces.Helpers;
namespace CommonInterfaces.ComponentModel
{
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class ContextSensitiveDisplayName : System.ComponentModel.DisplayNameAttribute
{
public class Context
{
public string Area { get; set; }
public string Controller { get; set; }
public string Action { get; set; }
public Type ResourceType { get; set; }
public string ResourceKey { get; set; }
public Context(string area, string controller, string action, Type resourceType, string resourceKey)
{
this.Area = area;
this.Controller = controller;
this.Action = action;
this.ResourceType = resourceType;
this.ResourceKey = resourceKey;
}
}
public ContextSensitiveDisplayName(params Context[] contexts)
{
/* Its these values that I need */
string currentArea = "";
string currentController = "";
string currentAction = "";
Context selectedContext =
contexts.FirstOrDefault(m =>
(m.Area == currentArea) &&
(m.Controller == currentController) &&
(m.Action == currentAction)
);
this.DisplayNameValue = ""; // Use the selectContext to retrieve string from resource file.
}
}
}
Toute aide à ce serait grandement apprécié.
Je l'ai marqué parce que vous pouvez obtenir les informations de routage assez facilement. –