Brad Wilson pisał wielką serię blogu o nowych ModelMetaData ASP.NET MVC jest: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.htmlASP.NET MVC ModelMetaData: Czy istnieje sposób ustawić IsRequired na podstawie RequiredAttribute?
W nim, on opisuje, w jaki sposób klasa ModelMetaData jest obecnie wystawiony w widokach i na matrycy pomocników. Chciałbym wyświetlać gwiazdkę obok etykiety pola formularza, jeśli pole jest wymagane, więc pomyślałem o użyciu właściwości IsRequired ModelMetaData. Jednak domyślnie IsRequired ma wartość true dla wszystkich właściwości nieululujących, podczas gdy dla wszystkich właściwości zerowalnych jest to wartość false. Problem polega na tym, że łańcuchy są zawsze zerowe, więc właściwość IsRequired jest zawsze fałszywa dla łańcuchów. Czy ktoś wie, jak zastąpić domyślne ustawienie IsRequired? Alternatywnie, pomyślałem o wykorzystaniu atrybutu RequiredAttribute, który dekorowałem moje właściwości, ale RequiredAttribute nie wydaje się być odsłonięty przez klasę ModelMetaData. Czy ktoś wie, jak obejść ten problem?
Z góry dziękuję.
Dzięki. Jest to dokładnie takie rozwiązanie, którego szukałem. Jednak nie wydaje mi się, żeby to działało poprawnie. Nawet poprzez moją właściwość jest ozdobiony RequiredAttribute i jest poprawnie wyświetlany na liście "atrybutów" w CreateMetadata(), attributes.Where (x => x.Equals (typeof (RequiredAttribute))) zwraca pustą listę, która powoduje IsRequired wciąż jest fałszywy. Czy coś jest nie tak z tym wyrażeniem lambda? –
"x.Equals (typeof (RequiredAttribute))" powinno brzmieć "x to RequiredAttribute". * x * jest instancją atrybutu, a nie typem atrybutu. – Levi
Dzięki Zowens i Levi. Mój problem został rozwiązany. –