如何在代码中检测属性是否使用HiddenInput进行修饰

时间:2012-04-02 16:19:18

标签: asp.net-mvc-3

我有一个视图,我需要检测属性是否使用隐藏输入进行修饰。

我的财产定义为:

[HiddenInput(DisplayValue = false)]
public string UserName{ get; set; }

到目前为止,我的尝试是:

var column.Member = "UserName";

if (ViewData.ModelMetadata.HideSurroundingHtml == true && 
      ViewData.Values.Contains(column.Member))
{                          
  column.Visible = false;
}

我已经读过,我可以使用“HideSurroundingHtml”来确定是否不应该显示该属性。

如何检测这个?

2 个答案:

答案 0 :(得分:2)

您可以使用反射来查看特定属性是否具有属性。

看看this question

在各种答案中,用户还posted a snippet创建扩展方法以检查属性是否具有特定属性。希望它有所帮助

答案 1 :(得分:0)

我对此问题的解决方案如下:

我创建了html帮助程序,它为我提供了一系列名称,其属性已使用“HiddenInput”属性进行修饰。

   public static string[] GetListOfHiddenPropertiesFor<T>(this HtmlHelper htmlHelper)
        {
            Type t = typeof(T);
            var propertyInfos = t.GetProperties()
                                .Where(x => Attribute.IsDefined(x, typeof(HiddenInputAttribute)))
                                .Select(x => x.Name).ToArray();
            return propertyInfos;
        }

这就是我所需要的一切