Drugi parametr object
dla Html.EditorFor
nie jest przeznaczony do atrybutów HTML, ale do dodatkowych danych widoku. Pomoce EditorFor
nie pozwalają na dostosowywanie atrybutów HTML w taki sposób, aby np. im bardziej specyficzni są pomocnicy <input>
- pobierają większość konfiguracji z metadanych modelu (na przykład [Attributes]
).
Najłatwiej "naprawić" jest oczywiście spada EditorFor
:
@Html.TextBoxFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
Alternatywnie, wyraź swoją EditorTemplate dla nieruchomości. Może to pozwolić na użycie (lub uproszczenie) oryginalnej składni poprzez pobranie wartości data_typeahead
z ViewData["data_typeahead"]
(lub "typeahead").
krok dalej, bardziej zaawansowany, można tworzyć własne Attribute
zastosowanie do właściwości modelu + wlasne ModelMetadataProvider
(lub - prościej - użyj IMetadataAware
, więcej o tym poniżej), aby przekształcić go w metadanych że EditorTemplate mógł wykorzystać - to w celu usunięcia decyzję o data-
atrybuty całkowicie z widoku, zamieniając swoje wezwanie do:
@Html.EditorFor(model => model.SireTag)
... i modelu w coś jak:
public class MyModel
{
[Typeahead("dsfsdfsd")]
public string SireTag { get; set; }
}
Example of this approach using IMetadataAware
dziękuję, że logiczne i rozwiązanie działa .. super .... –
Chociaż to rozwiązanie działa, @MarosDimitrio opublikował przeciążenie metody 'EditorFor', która akceptuje atrybuty HTML. –