Ho il seguente attibute basato UIHInt:Come trovare la proprietà di destinazione di un attributo 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;
}
}
Il suo scopo è quello di assegnare un SelectList ad una proprietà della vista unico valore modello da selezionare da un elenco, come questo:
public class DemoModel: ViewModel
{
[Required]
[DropDownList("LanguageSelect")]
[Display(Name = "Language")]
public int? LanguageId { get; set; }
public SelectList LanguageSelect { get; set; }
}
ho questo funziona ora con alcuni macchinari molto Golbergiani e il mio provider di metadati, ma avendo scoperto IMetadataAware.OnMetadataCreated
, sento di poterlo semplificare. In questo momento aggiungo il SelectListName
ai metadati, quindi faccio un salto attraverso alcuni anelli per a) Ottieni la SelectList in una sorta di dizionario globale e b) estrai l'elenco di selezione da quel dizionario quando esegui il rendering dell'elenco a discesa.
Vorrei aggiungere la SelectList ai metadati del modello nell'attributo, cioè i metadati locali alla proprietà a cui si applica l'attributo, ma come accedere a tale proprietà o al suo tipo di contenuto?
quale metodo HtmlHelper stai usando in immagine per l'uscita della lista? – MarkG