Zauważyłem, że na większości, jeśli nie we wszystkich, standardowych kontrolkach internetowych w przestrzeni nazw System.Web.UI.WebControls, można dodawać dowolne właściwości, które mają do nich bez awarii Strona.Umożliwianie dowolnej właściwości/atrybutu na serwerze/kontrolerze użytkownika
Przejmij kontrolę asp: Button dla przykładu.
Ten kod jest całkowicie poprawny:
<form runat="server">
<asp:Button runat="server" Text="Test button" crapAttribute="crapValue" />
</form>
Teraz mam kontrolę serwera niestandardowy, który rozbija jeśli dodać dowolne atrybuty do niego. Akceptuje tylko atrybuty, które mają zdefiniowaną odpowiednią własność publiczną.
Otrzymany błąd jest podobny do następującego: "Kontrola nie ma publicznej właściwości o nazwie" crapAttribute "".
Chciałbym, aby moje niestandardowe formanty akceptowały dowolny atrybut bez awarii. Co muszę zrobić, aby to zadziałało?
Przyjrzałem się standardowym elementom sterującym w Reflectorze i mają one wszystkie rodzaje atrybutów i innych rzeczy, ale nic nie zobaczyłem, co od razu rzuciło mi się w oczy.
Moje niestandardowe elementy sterujące dziedziczą z WebControl, aby uzyskać wartość.
Teraz czuję się jak osioł :-) Uświadomiłem sobie, że w rzeczywistości dziedziczę po "kontroli", a nie "WebControl". Kiedyś odziedziczyliśmy po "WebControl", ale jakiś czas temu zmieniono ją na "Control". Wierzę, że jeśli zacznę dziedziczyć po "WebControl", ten problem przestanie istnieć. – HaukurHaf