我有以下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