Asp.net mvc 3 如何在代码中检测属性是否用HiddenInput修饰

Asp.net mvc 3 如何在代码中检测属性是否用HiddenInput修饰,asp.net-mvc-3,Asp.net Mvc 3,我有一个视图,需要在其中检测属性是否用隐藏输入装饰 我的财产定义为: [HiddenInput(DisplayValue = false)] public string UserName{ get; set; } 到目前为止,我的努力是: var column.Member = "UserName"; if (ViewData.ModelMetadata.HideSurroundingHtml == true && ViewData.Values.Contain

我有一个视图,需要在其中检测属性是否用隐藏输入装饰

我的财产定义为:

[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;
}
我已经读到,我可能能够使用“hidesurroundingtml”来确定是否不应显示该属性


您知道如何检测此属性吗?

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

   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;
        }


在各种答案中,用户还需要创建一个扩展方法来检查属性是否具有特定属性。希望能有所帮助

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

我已经创建了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;
        }
public静态字符串[]GetListofHiddenProperties for(此HtmlHelper HtmlHelper)
{
类型t=类型(t);
var propertyInfos=t.GetProperties()
.Where(x=>Attribute.IsDefined(x,typeof(HiddenInputAttribute)))
.Select(x=>x.Name).ToArray();
归还财产;
}
这就是我所需要的