Ich habe die folgende Berechtigungsklasse. Wie kann ich diese zur Verfügung zu stellen in allen Ansichten ohne @using MyApp.Extensions
ASP MVC machen Class-Namespace in allen Ansichten verfügbar
using System.Security.Principal;
namespace MyApp.Entensions
{
public class Permissions
{
private readonly IPrincipal user;
public Permissions(IPrincipal user)
{
this.user = user;
}
public bool CanEditItems
{
get { return user.IsInAnyRole("Manager", "Admin"); }
}
public bool CanDeleteItems
{
get { return user.IsInAnyRole("Admin"); }
}
// Other permissions
}
}
in jeder Ansicht die folgende using-Anweisung verwenden Ich habe versucht, es auf die Ansichten web.config Zugabe wie folgt, aber ich bekomme keine Intellisense wenn tryin etwas nennen wie @if (User.CanDeleteItems)
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="MyApp.Extensions" />
</namespaces>
</pages>
Meinst du nicht @ model.user.CanDeleteItems oder so ähnlich? Was ist der Benutzer in Ihrer cshtml-Datei? –
@Peter Sie haben missverstanden. Ich gebe kein Modell weiter. Die Klasse hat das IPrinciple erweitert, so dass Benutzer der aktuell angemeldete Benutzer ist. – adam78
Sie überprüfen also den Inhalt der Ansicht anhand des booleschen Ergebnisses dieser Bedingung? Wenn ja, wäre es nicht besser, Ihre Inhalte auf Layout-Ebene zu verpacken? – LDJ