AppPrivilege
というモデルオブジェクトがあり、それにはPrivilegeName
というパブリック文字列プロパティが含まれています。私はどのように確認することができ、ビューで今すぐRazorでは、要素のプロパティに基づいてViewBag IEnumerableオブジェクト内のオブジェクトの存在をチェックする方法は?
SQLRolerecord toCheckPrivs = new SQLRolerecord();
IEnumerable<AppPrivilege> privsOfUser = toCheckPrivs.getPrivsForRole(roleUser);
ViewBag.PrivilegeSet = privsOfUser;
return View();
次のように(他のオブジェクト型は、すべて私のプロジェクトにカスタムされている)、コントローラでは、私はそれらのオブジェクトのコレクションを生成し、ViewBagに入れ私が選択したPrivilegeName
(例えば "Read")のような要素があるかどうかを確認してください。ここで私はビューで実現しようとしている構造は次のとおりです。
@if (ViewBag.PrivilegeSet != null)
{
if(ViewBag.PrivilegeSet.Contains(/*search criteria for PrivilegeName*/))
{
//valid code here
}
}
この要件に対処する私のアプローチは、連結すべて
PrivilegeName
値の潜在的に大きな文字列を生成し、ViewBagを通じてそれを渡すから成って
その上にIビュー内で文字列チェックを行うことができます。しかし、これはパフォーマンスが良くないと思われるので、もっと適切な方法でやりたいと思っています。
ありがとうございます。
感謝「を読む」でViewBag.PrivilegeSetコレクションに存在するでleasetつの項目を参照してください
Any()
メソッドを使用するコードです!出来た。文字列メソッドの代わりに '=='を使うのに欠点はありますか? – ITWorkerこの文字列と文字列の比較では、読みやすさのために '='を使用します。これについての良い記事はこちらhttps://blogs.msdn.microsoft.com/csharpfaq/2004/03/29/when-should-i-use-and-when-should-i-us-equals/ – Shyju