在 asp.net 中创建嵌套 ServerControl?
我想创建一个如下所示的服务器控件:
<%@ Register Assembly="MdsAccordionMenu" Namespace="MdsAccordionMenu" TagPrefix="cc1" %>
<cc1:MdsAccordionMenu ID="MdsAccordionMenu1" runat="server">
<MdsAccordionMenuItem Title="Some Title">
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
</MdsAccordionMenuItem>
</cc1:MdsAccordionMenu>
我编写了以下 C# 代码,但它不起作用:
MdsAccordionMenu.cs :
namespace MdsAccordionMenu
{
[ToolboxData("<{0}:MdsAccordionMenu runat=server></{0}:MdsAccordionMenu>")]
[ParseChildren(true, "MdsAccordionMenuItems")]
[DefaultProperty("MdsAccordionMenuItems")]
[Serializable]
public class MdsAccordionMenu : WebControl
{
[Description("سرعت نمایش انیمیشن")]
[DefaultValue(500)]
public int AnimationSpeed { get; set; }
[Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)]
public List<MdsAccordionMenuItem> MdsAccordionMenuItems { get; set; }
}
}
MdsAccordionMenuItem.cs :
namespace MdsAccordionMenu
{
//[TypeConverter(typeof(ExpandableObjectConverter))]
[ParseChildren(true, "MdsAccordionItems")]
[DefaultProperty("Title")]
[Serializable]
public class MdsAccordionMenuItem
{
[Description("تیتر منو")]
[DefaultValue("Title")]
[NotifyParentProperty(true)]
public string Title { get; set; }
[Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)]
[NotifyParentProperty(true)]
public List<MdsAccordionItem> MdsAccordionItems { get; set; }
}
}
MdsAccordionItem .cs:
namespace MdsAccordionMenu
{
[Serializable]
public class MdsAccordionItem : INamingContainer
{
[NotifyParentProperty(true)]
[Description("متن")]
public string Text { get; set; }
[NotifyParentProperty(true)]
[Description("آدرس لینک منو")]
public string Link { get; set; }
[NotifyParentProperty(true)]
[Description("آدرس آیکون")]
public string ImageUrl { get; set; }
}
}
我该怎么做?
I wanna create a server control like the following :
<%@ Register Assembly="MdsAccordionMenu" Namespace="MdsAccordionMenu" TagPrefix="cc1" %>
<cc1:MdsAccordionMenu ID="MdsAccordionMenu1" runat="server">
<MdsAccordionMenuItem Title="Some Title">
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
<MdsAccordionMenuItem Text="some text" Link="http://" IconUrl="image.png" />
</MdsAccordionMenuItem>
</cc1:MdsAccordionMenu>
I written the following c# code , but it doesn't work :
MdsAccordionMenu.cs :
namespace MdsAccordionMenu
{
[ToolboxData("<{0}:MdsAccordionMenu runat=server></{0}:MdsAccordionMenu>")]
[ParseChildren(true, "MdsAccordionMenuItems")]
[DefaultProperty("MdsAccordionMenuItems")]
[Serializable]
public class MdsAccordionMenu : WebControl
{
[Description("سرعت نمایش انیمیشن")]
[DefaultValue(500)]
public int AnimationSpeed { get; set; }
[Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)]
public List<MdsAccordionMenuItem> MdsAccordionMenuItems { get; set; }
}
}
MdsAccordionMenuItem.cs :
namespace MdsAccordionMenu
{
//[TypeConverter(typeof(ExpandableObjectConverter))]
[ParseChildren(true, "MdsAccordionItems")]
[DefaultProperty("Title")]
[Serializable]
public class MdsAccordionMenuItem
{
[Description("تیتر منو")]
[DefaultValue("Title")]
[NotifyParentProperty(true)]
public string Title { get; set; }
[Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)]
[NotifyParentProperty(true)]
public List<MdsAccordionItem> MdsAccordionItems { get; set; }
}
}
MdsAccordionItem .cs:
namespace MdsAccordionMenu
{
[Serializable]
public class MdsAccordionItem : INamingContainer
{
[NotifyParentProperty(true)]
[Description("متن")]
public string Text { get; set; }
[NotifyParentProperty(true)]
[Description("آدرس لینک منو")]
public string Link { get; set; }
[NotifyParentProperty(true)]
[Description("آدرس آیکون")]
public string ImageUrl { get; set; }
}
}
How can I do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据您的 C# 代码,标记应如下所示...
According to your c# code, the markup should be as follows...
我可以解决问题
MdsAccordionMenu.cs
MdsAccordionMenuItem.cs
MdsAccordionItem.cs
现在,我可以创建使用以下代码在设计器模式下进行控制:
I could resolve the problem
MdsAccordionMenu.cs
MdsAccordionMenuItem.cs
MdsAccordionItem.cs
Now, I can create the control in designer mode with the following code :