我有以下Permission類。我怎樣才能讓所有的觀點這可無需使用以下using語句在每個視圖@using MyApp.Extensions
ASP MVC Make類命名空間在所有視圖中可用
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
}
}
我試着將它添加到的意見的web.config如下,但我沒有得到任何智能感知當試着撥打像@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>
難道你不是指@ model.user.CanDeleteItems或類似的東西嗎?否則,你的cshtml文件中的User是什麼? –
@彼得你誤會了。我沒有傳入模型。該類擴展了IPrinciple,以便用戶是當前登錄的用戶。 – adam78
因此,您正在根據該條件的布爾結果進行檢查並呈現視圖的內容?如果是這樣,你不是更好地包裝在佈局文件級別的內容? – LDJ