Próbując utworzyć niestandardowe źródło danych, które ma zostać użyte w środowisku ASP.NET, utworzyłem niestandardową klasę źródła danych, niestandardowy edytor i niestandardowy klasa serializowalna.Dlaczego moja projektowana właściwość nie jest serializowana w ASPX
Nie mogę zrozumieć, dlaczego to nie działa ... mimo że prawdopodobnie mam więcej atrybutów niż jest to wymagane (przeglądałem i próbowałem rzeczy przez wiele godzin), z tego co rozumiem, że powinno być zrobione PersistenceMode(PersistenceMode.InnerProperty)
podstęp ... Wydaje mi się, że mój kod jest podobny do Why can't I declare sub-elements (properties) of a UserControl in a WebForm?.
Kod działa w następujący sposób:
[ParseChildren(true)]
[PersistChildren(true)]
public class MyDataSource : DataSourceControl
{
// [much more irrelevant code...]
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
[PersistenceMode(PersistenceMode.InnerProperty)]
[MergableProperty(false)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(Editors.ResultRequestEditor), typeof(System.Drawing.Design.UITypeEditor))]
public ResultRequest Request { get; set; }
}
[Serializable]
[PersistChildren(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
[ParseChildren(true)]
public class ResultRequest
{
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
public string ColumnName { get; set; }
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
public Type ColumnType { get; set; }
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Always)]
public object[] ResultTypeParameters { get; set; }
}
Zwyczaj edytor wydaje się działać: po użyciu go, właściwości VS są poprawnie zaktualizowane.
Jednak po aktualizacji coś informacja nie jest utrwalane w pliku ASPX:
<cc1:MyDataSource ID="SearchDataSource1" runat="server" ProviderID="MyProvider1" />
Co spodziewałem był jakiś serializacji w źródle danych, np:
<cc1:MyDataSource ID="SearchDataSource1" runat="server" ProviderID="MyProvider1">
<Request>
// blah
</Request>
</cc1:MyDataSource>
Może ktoś proszę wyjaśnić dlaczego to nie działa?
Czy próbowałeś już bez niektórych atrybutów, na przykład TypeConverters? –
Nie rozumiem, co próbujesz zrobić. Zasadniczo mówisz: mam trzy klasy i nie działają. Co próbujesz zrobić? Jakie jest twoje zachowane zachowanie i oczekiwane zachowanie? Oczekujesz jakiejś serializacji w źródle danych? Serializacja w klasie? Zwykle serializacja występuje wewnątrz pliku tekstowego lub binarnego. Moje następne pytanie brzmiałoby: Jaki plik? –
W zasadzie próbuję utworzyć niestandardowy edytor klasy "ResultRequest". Źródło danych działa, po prostu nie mogę go skonfigurować z ASPX zamiast z kodu. The TypeConverters są tam, ponieważ domyślna serializacja (do twojego ASPX XML) nie działa - f.ex. podczas gdy ja wiem jak serializować "obiekt []", projektant nie, więc zamierzałem mu powiedzieć, jak to się robi. Po to też jest edytor. Tak, próbowałem dodawać i usuwać atrybuty godzinami, próbując zrozumieć, jak to działa (wniosek: nie działa i nie rozumiem tego). – atlaste