【发布时间】:2013-04-10 02:34:49
【问题描述】:
为了创建一个应该在 ASP.NET 中使用的自定义数据源,我创建了一个自定义数据源类、一个自定义编辑器和一个自定义可序列化类。
我不明白为什么它不起作用......即使我可能有比要求更多的属性(我已经浏览和尝试了几个小时),据我了解 PersistenceMode(PersistenceMode.InnerProperty) 应该有成功了......另外,在我看来我的代码类似于Why can't I declare sub-elements (properties) of a UserControl in a WebForm?。
代码工作如下:
[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; }
}
自定义编辑器似乎工作:使用它后,VS中的属性正确更新。
但是,在更新某些内容后,信息不会保留在 ASPX 文件中:
<cc1:MyDataSource ID="SearchDataSource1" runat="server" ProviderID="MyProvider1" />
我期望的是数据源中的一些序列化,例如:
<cc1:MyDataSource ID="SearchDataSource1" runat="server" ProviderID="MyProvider1">
<Request>
// blah
</Request>
</cc1:MyDataSource>
谁能解释一下为什么这不起作用?
【问题讨论】:
-
您是否尝试过不使用某些属性,例如 TypeConverters?
-
我不明白你在做什么。基本上你的意思是:我有三个班,他们不工作。你想做什么?你观察到的行为和预期的行为是什么?您期望数据源中有一些序列化?类中的序列化?通常序列化发生在文本或二进制文件中。所以我的下一个问题是:什么文件?
-
嗯,基本上我正在尝试为
ResultRequest类制作一个自定义编辑器。数据源本身可以工作,我只是无法从 ASPX 而不是后面的代码对其进行配置。 TypeConverters 在那里是因为默认序列化(到您的 ASPX XML)不起作用 - f.ex。虽然我知道如何序列化object[],但设计师不知道,所以我打算告诉他这是怎么做的。这也是编辑器的用途。是的,我花了几个小时尝试添加和删除属性,试图了解它是如何工作的(结论:它不起作用,我不明白)。 -
@SimonMourier 所以回答你的问题,是的,我确实尝试过,但我看不出它是如何工作的(毕竟,设计者不知道如何序列化
ResultRequest数据回来和到 ASPX 文件);据我了解,我需要一个TypeConverter。
标签: c# asp.net editor controls datasource