2012-04-02 19 views
5

Mam widok, w którym muszę wykryć, czy właściwość jest ozdobiona ukrytymi danymi wejściowymi.Jak wykryć w kodzie, czy właściwość jest ozdobiona HiddenInput

Moja nieruchomość jest zdefiniowany jako:

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

Moja próba dotąd:

var column.Member = "UserName"; 

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

Czytałem, że mogę być w stanie wykorzystać „HideSurroundingHtml”, aby ustalić, czy nieruchomość powinna nie być wyświetlane.

Jakieś pomysły, jak to wykryć?

Odpowiedz

0

Moje rozwiązanie tego problemu jest następujący:

Stworzyłem HTML pomocnika, który daje mi tablicę nazw o właściwościach, które zostały urządzone z atrybutem „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; 
     } 

To wszystko, co potrzebne

2

Możesz użyć odbicia, aby sprawdzić, czy konkretna właściwość ma atrybut.

Spójrz na this question.

W różnych odpowiedziach użytkownik również posted a snippet tworzy metodę rozszerzenia, aby sprawdzić, czy właściwość ma określony atrybut, czy nie. Nadzieję, że pomoże

Powiązane problemy