Ich habe ein Modellobjekt namens AppPrivilege
, und es enthält eine öffentliche Zeichenfolge-Eigenschaft namens . In einem Controller, erzeuge ich eine Sammlung dieser Objekte, und legte sie in den ViewBag, wie folgt (die anderen Objekttypen sind alle benutzerdefinierten mein Projekt):In Razor, wie die Existenz eines Objekts in ViewBag IEnumerable-Objekt basierend auf einer Eigenschaft des Elements überprüft?
SQLRolerecord toCheckPrivs = new SQLRolerecord();
IEnumerable<AppPrivilege> privsOfUser = toCheckPrivs.getPrivsForRole(roleUser);
ViewBag.PrivilegeSet = privsOfUser;
return View();
Jetzt in einer Ansicht, wie kann ich überprüfen Gibt es ein Element AppPrivilege
, das eine meiner Wahl, wie zum Beispiel "Lesen" hat? Hier ist die Struktur I in der Ansicht zu erreichen versuchen:
@if (ViewBag.PrivilegeSet != null)
{
if(ViewBag.PrivilegeSet.Contains(/*search criteria for PrivilegeName*/))
{
//valid code here
}
}
Mein Ansatz, diese Anforderung zu adressieren bestand eine potentiell große Zeichenfolge aller verketteten PrivilegeName
Werte zu erzeugen, und nebenbei, dass durch die ViewBag, auf die ich könnte String-Überprüfung in der Ansicht tun. Dies scheint jedoch nicht leistungsfreundlich zu sein, also möchte ich es auf eine angemessenere Weise tun.
Vielen Dank.
Dank zu sehen! Es funktionierte. Gibt es einen Nachteil bei der Verwendung von '==' anstelle einer String-Methode? – ITWorker
In diesem String zu String-Vergleich bevorzuge ich '=' für die Lesbarkeit. Hier ist ein guter Beitrag dazu https://blogs.msdn.microsoft.com/csharpfaq/2004/03/29/when-should-i-use-and-when-should-i-use-equals/ – Shyju