Mam następujący UIHInt oparciu attibute:Jak znaleźć właściwość docelową atrybutu UIHInt?
[AttributeUsage(AttributeTargets.Property)]
public class DropDownListAttribute : UIHintAttribute, IMetadataAware
{
public DropDownListAttribute(string selectListName)
: base(KnownUiHints.DropDown, KnownPresentationLayers.Mvc, selectListName)
{
SelectListName = selectListName;
}
public string SelectListName { get; set; }
public void OnMetadataCreated(ModelMetadata metadata)
{
metadata.AdditionalValues[KnowMetadataKeys.SelectListName] = SelectListName;
}
}
Jego celem jest przypisanie SelectList do nieruchomości pojedyncza wartość widok modelu należy wybrać z listy, tak:
public class DemoModel: ViewModel
{
[Required]
[DropDownList("LanguageSelect")]
[Display(Name = "Language")]
public int? LanguageId { get; set; }
public SelectList LanguageSelect { get; set; }
}
mam działa to teraz z kilkoma maszynami Golbergowskimi i moim dostawcą metadanych, ale po odkryciu IMetadataAware.OnMetadataCreated
, czuję, że mogę to uprościć. Teraz dodam do metadanych SelectListName
, a następnie przeskoczę przez kilka kółek do a) Pobierz listę SelectList do globalnego słownika i b) uzyskaj listę wyboru z tego słownika podczas renderowania listy rozwijanej.
Chciałbym dodać samą SelectList do metadanych modelu w atrybucie, tj. Metadane lokalne do właściwości, której dotyczy atrybut, ale jak uzyskać dostęp do tej właściwości lub jej typu?
jaka metoda HtmlHelper używasz w celu wyprowadzenia liście? – MarkG