用户控件的开始和结束标签之间不允许有内容我想建立一个用户控件,比方说MyDiv.ascx。此控件呈现div标签并在添加一些属性之后执行更多代码,这在这里不是问题。问题是我想要用户控件的开始和结束标记之间的文本。例如:文本与其他一些HTML标记一起使用。所以当做这样的事情时,我在运行网站时遇到解析错误。VS2008还警告我说“元素MyDiv的开始和结束标记之间不允许有内容”。我相信您只需要在控件中应用一些属性:[ParseChildren(false)][PersistChildren(true)]publicclassMyDiv:UserControl{...您可能需要覆盖AddedControl-我不确定。这么说吧——这适用于我写过的唯一一个用户控件:)建议的解决方案对我不起作用。我找到了以下解决方案:要么让用户控件继承自Panel而不仅仅是UserControl,或者如果您有多个内容,就像我的情况一样,使您的内容字段成为PlaceHolder而不是简单的控件。添加了[PersistenceMode(PersistenceMode.InnerProperty)]以避免XHTML验证警告。publicpartialclassDrawerControl:UserControl{[PersistenceMode(PersistenceMode.InnerProperty)]publicPlaceHolderBodyContent{get;放;}[PersistenceMode(PersistenceMode.InnerProperty)]publicPlaceHolderGripContent{get;放;base.OnInit(e);phBodyContent.Controls.Add(BodyContent);phGripContent.Controls.Add(GripContent);}}phBodyContent和phGripContent是PlaceHolder的。这样我就可以将我的控件用于ASPX中的任何内容:我还想创建一个带有“innerHtml”的自定义控件。这就是我最终得到的结果(部分基于一些早期的答案/评论)...div.ascx.cs:[ParseChildren(true,"Text")]//StoreinnercontentinTextpropertypublicpartialclassdiv:系统。Web.UI.UserControl{公共字符串文本{get;放;}protectedvoidPage_Load(objectsender,EventArgse){litText.Text=Text;//随心所欲地渲染}}div.ascx:测试页面:测试数据可以抑制设计时信息,开关标签之间不允许有内容,但它在运行时有效。[ParseChildren(true,"Content")][PersistChildren(false)]publicpartialclassCollapsiblePanelControl:UserControl{privateControlcontent;//添加内容this.MainContent.Controls.Add(content);//如果这不是回发if(!this.IsPostBack){//设置为true;this.Expanded=true;标记看起来像这样:然后在客户端:...[YourContentGoesHere]向控件添加一个Text属性,并将此文本属性链接到服务器上运行的标记,在打开和关闭之间div。您可能需要小心,如果您将服务器控件放在内容区域中会怎样……您可能只希望控件从面板继承并覆盖您需要调整的任何方法?看你需要定制什么,可能更容易也可能更难以上是C#学习教程:用户控件的开始和结束标签之间不允许有内容学习教程,希望大家多多关注——publicclassMyDiv:Panel{}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
