在mvc3的视图页面中访问CustomAttribute

本文关键字:访问 CustomAttribute mvc3 视图 | 更新日期: 2023-09-27 18:03:19

我已经创建了一个自定义属性'RoleAction'并添加到模型属性

public class RoleActionAttribute : Attribute
{
    public string UserRole { get; set; }
    public RoleActionAttribute(string Role)
    {
        this.UserRole = Role;
    }
}

[RoleAction("Manager")] 
public EmployeeName

我如何得到的RoleAction值(管理器)在我的mvc视图页面。

在mvc3的视图页面中访问CustomAttribute

您可以使用反射来获取自定义属性:

var roleAction = (RoleActionAttribute)typeof(MyViewModel)
    .GetProperty("EmployeeName")
    .GetCustomAttributes(typeof(RoleActionAttribute), true)
    .FirstOrDefault();
if (roleAction != null)
{
    var role = roleAction.UserRole;
}

另一种可能性是使用元数据,并通过实现ASP中引入的新的IMetadataAware接口来使您的自定义属性元数据感知。. NET MVC 3:

public class RoleActionAttribute : Attribute, IMetadataAware
{
    public string UserRole { get; set; }
    public RoleActionAttribute(string Role)
    {
        this.UserRole = Role;
    }
    public void OnMetadataCreated(ModelMetadata metadata)
    {
        metadata.AdditionalValues["role"] = UserRole;
    }
}

然后:

var metaData = ModelMetadataProviders
    .Current
    .GetMetadataForProperty(null, typeof(MyViewModel), "EmployeeName");
if (metaData != null)
{
    string userRole = metaData.AdditionalValues["role"] as string;
}

您可以使用TempData