- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为了尝试创建一个应该在 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>
有人可以解释为什么这不起作用吗?
最佳答案
请看一下我的示例,它不那么复杂,因此更容易理解:
第一个父控件(在您的例子中是 DataSource):
[ToolboxData("<{0}:TabContainer runat=server></{0}:TabContainer>")]
[ParseChildren(ChildrenAsProperties = false)]
[PersistChildren(true)]
public class TabContainer : Panel, INamingContainer
{
#region private properties
List<TabItem> tabs = new List<TabItem>();
#endregion
[Bindable(true)]
public event EventHandler TabClick;
[Browsable(true)]
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<TabItem> Tabs
{
get { return this.tabs; }
}
}
请注意,我已将 ChildrenAsProperties 设置为 false。这是子定义,TabItem:
public class TabItem : Panel, IPostBackEventHandler
{
String clientClick = String.Empty;
public event EventHandler Click;
[Bindable(true)]
[Category("Appearance")]
public string Text
{
get
{
if (ViewState["Text"] == null)
{
ViewState["Text"] = "";
}
return (string)ViewState["Text"];
}
set
{
ViewState["Text"] = value;
}
}
}
现在在设计器中我可以像这样声明 TabContainer:
<cc1:TabContainer ID="TabContainer1" runat="server"
</cc1:TabContainer>
最后添加保留状态的子控件:
<cc1:TabContainer ID="TabContainer1" runat="server"
OnTabClick="TabContainer_TabClick">
<Tabs>
<cc1:TabItem ID="Tab1" Text="Hello" runat="server" />
<cc1:TabItem ID="Tab2" Text="World" runat="server" />
</Tabs>
</cc1:TabContainer>
最好的问候!
关于c# - 为什么我的设计器属性没有在 ASPX 中序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058212/
在 ASP.NET 编程的“代码隐藏”风格中,您将代码拆分为两个不同的文件:一个 .aspx 文件和一个 aspx.cs 文件。 (这适用于 C#;对于 VB,则为 aspx.vb。)每个人似乎都决定
在这个项目中你可以看到aspx文件下的aspx.designer.vb和aspx.vb 但是在我的项目中我没有它?? ,, 是什么赋予了?? 我可以通过右键单击然后单击查看代码来查看 vb 代码。 如
我将 my.aspx.cs 文件中的变量值传递到我的 .aspx 文件。当它在 aspx 中时,它的值会发生变化,然后需要返回到 .aspx.cs 文件。但是,它不允许我更改变量的值。有什么建议么?
我在 aspx 页面中使用多个 aspx 用户控件实例时遇到问题。当我尝试通过 Java 脚本获取用户控件元素值时会发生这种情况。 用户控制代码: function ucFun()
我有一个 asp.net 网站,我想知道是否可以将 .aspx 文件调用到另一个 .aspx 文件中。场景是我有 3 个左侧菜单,它们显示在各个页面上。 一开始我只有一个左侧菜单,因此将其添加到我的
我正在使用 C# 和 .NET ASP Web 应用程序开发我的第一个项目。我已成功连接到 SQL 数据库,但如何将输入从 .aspx(html 中)传递到 .aspx.cs(C# 中)? IE。(.
我已经阅读了很多关于同一问题的类似帖子,但这些修复对我不起作用。 我在页面代码的类区域中将变量声明为 Public,并在 Page_Load 子例程中为其分配一个值,但是当我在 javascript
在重命名不同的 ASPX 页面后,我曾多次遇到同样的问题,令我惊讶的是我在 stackoverflow 上找不到遇到同样问题的其他人。 当我运行我的 ASP.NET C# 项目时,调试器给我这样一条消
Select Zone East West North
这是我的 javascript 函数,其中值来自其他页面并且完美接收,但是如何在 cs 页面中检索“divConversation”值。这是我的代码 function myLoad() {
我不是编程新手,而是 Visual Studio、MVC、C#、ASP.NET 和 EXT.NET,即我尝试使用的所有工具的新手。 我正在尝试创建一个 Ext.Net 2.0 MVC4 项目,并获得了
我有一个 HTML 页面和一个 iframe(aspx 页面),如下所示。 Mypage.htm 此 Mypage.htm 将作为来自其他页面的链接提供,用户单击这些页面,Mypage.htm
我们最近设置了一个新的 SSRS 环境,报表的报表管理器 URL 现在为 Reports/Pages/Report.aspx 以前的环境是ReportList/Pages/ReportViewer.a
我正在尝试点击按钮,但我得到了 'ASP.views_home_index_aspx' does not contain a definition for'btnCreateOrder_Click'
我正在尝试将数据从 aspx.vb 页面传递到 aspx 页面。 在 aspx.vb 页面,我在 textbox 中放置了一个值(0 或 1),即 runat="server" 当加载 aspx 页面
我是 asp.net 的新手,正在处理一个有两个 .aspx 页面的问题集。 事件.aspx: 这是网站管理员在已经可用的面板(如事件标题、日期、信息等)的帮助下更新即将举行的事件和网络研讨会的地方。
这是我在 ASP.NET 中尝试执行的操作: 创建一个名为 Main.aspx 的页面。这个页面有一个 DIV 和一个按钮。 浏览器加载 Main.aspx。然后,当我单击该按钮时,我想将页面 Pag
我已经从一个不再可用的人那里继承了一个网站。在已部署的文件夹中,我有 Config.aspx(请参阅代码)。但是我找不到代码隐藏文件。配置页面有效。我在哪里可以找到 .cs 文件? 谢谢
我使用 iframe 来显示一个 aspx 页面,如下所示 this link 在 Displaypdf.aspx.cs 中,我正在显示一个 pdf,如下所示。我在
我的元素中有 2 个 aspx 文件。 first.aspx 页面上有一些内容,当我单击一个按钮时,它将在同一页面上启动一个框架(second.aspx 只有显示日历的代码)。 现在,一旦该日历 (s
我是一名优秀的程序员,十分优秀!