Ich brauche einige Navigationsoptionen, die für den aktuellen Benutzer spezifische Schlüssel erfordern, die sich auf einer Masterpage befinden. Ich brauche einen Ratschlag zu Best Practice.So legen Sie Navigationsvariablen in MVC Masterpages fest
In die folgenden Links in einem linken Navigations in einem Masterpage
http://www.example.com/manageShop/123
Wo '123' ist die Laden-ID, die die aktuelle Benutzer ist der Manager von. Ich brauche eine Möglichkeit, dies zu der Masterpage der Weitergabe
Derzeit ich etwas in diesem Sinne werde:
<li><%= Html.ActionLink<ShopController>(x => x.ManageShop((int)Session["ShopKey"]), "Manage")%></li>
Ich dachte, das war eine gute Idee, da ich nur die ShopKey einmal in der Sitzung festgelegt haben und es ist getan, die nach unten ist, dass iv bemerkt, dass die Sitzung gemischt wird, wenn Sie die Website geöffnet haben zwei Registerkarten.
Alternativ habe ich versucht, dieses:
<li><%= Html.ActionLink<ShopController>(x => x.ManageShop((int)ViewData["ShopKey"]), "Manage")%></li>
Aber das bedeutet, dass Sie die Viewdata Einstellung in jeder Aktion in jedem Controller zu halten haben. Was furchtbar ist.
BEARBEITEN: Ich habe schon an Filtern wie eu-ge-ne unten vorgeschlagen, aber ich das nicht wirklich löst mein Problem, wie ich immer noch das Problem der Einstellung der ShopKey überall?
Was ist die Lösung?
public class UserKeyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Controller.ViewData["UserKey"] = UserKey;
}
}
und verwenden Sie es auf dem Controller oder Controller-Aktionen
[UserKey]
public class YourController : Controller
{
// or
public class YourController : Controller
{
[UserKey]
public ActionResult Index()
{
oder verwenden Controller.OnActionExecuting() (oder sogar schaffen Basis-Controller für diese:
Es ist nicht schrecklich, wenn Ihre Controller von Basis-Controller abgeleitet ist, die fügt notwendige ViewData hinzu. –
Gib mir ein Beispiel wie? Kann nicht sehen, wie eine Basis helfen würde – Dan