用户控件的开始和结束标记之间不允许有内容
我想构建一个用户控件,假设MyDiv.ascx。 这个控件呈现div标签,并在诸如添加少量属性之类的东西之后做更多代码,这在这里不是问题。 问题是我希望用户控件的开始和结束标记之间的文本。 例如:
文本与其他一些HTML标签一起使用。
所以当做这样的事情时,我在运行网站时遇到了解析错误。 另外VS2008通过说“ 元素 MyDiv 的开始和结束标签之间不允许内容 ”来警告我。
我相信你只需要在控件中应用几个属性:
[ParseChildren(false)] [PersistChildren(true)] public class MyDiv : UserControl { ...
您可能需要覆盖AddedControl
– 我不确定。
这样说吧 – 这对于我曾经写过的唯一用户控件来说是有效的:)
建议的解决方案对我不起作用。 我找到了以下解决方案:要么让用户控件inheritance自Panel
而不仅仅是UserControl
,要么如果你有多个内容,就像我的情况一样,请将你的内容字段设为PlaceHolder
而不是简单的Control
。
添加[PersistenceMode(PersistenceMode.InnerProperty)]
以避免XHTMLvalidation警告。
public partial class DrawerControl : UserControl { [PersistenceMode(PersistenceMode.InnerProperty)] public PlaceHolder BodyContent { get; set; } [PersistenceMode(PersistenceMode.InnerProperty)] public PlaceHolder GripContent { get; set; } protected override void OnInit(EventArgs e) { base.OnInit(e); phBodyContent.Controls.Add(BodyContent); phGripContent.Controls.Add(GripContent); } }
phBodyContent
和phGripContent
是PlaceHolder
的。
这样我可以将我的控件与ASPX中的任何内容一起使用:
我还想用“innerHtml”创建一个自定义控件。 这就是我最终得到的结果(部分基于一些早期的答案/评论)……
div.ascx.cs:
[ParseChildren(true, "Text")] //Store inner content in Text property public partial class div : System.Web.UI.UserControl { public string Text { get; set; } protected void Page_Load(object sender, EventArgs e) { litText.Text = Text; //Render it however you want } }
div.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="div.ascx.cs" Inherits="TestApp.Controls.div" %>
测试页面:
<%@ register src="~/Controls/div.ascx" tagname="div" tagprefix="uc" %> Test data
我在这里发现了这个:
ASP.Net:用户控制内容区域,显然可能,但我需要一些细节
像魅力一样工作,但我希望我能压抑设计时间信息,开关标签之间不允许内容,但它在运行时有效。
[ParseChildren(true, "Content")] [PersistChildren(false)] public partial class CollapsiblePanelControl : UserControl { private Control content; // add the content this.MainContent.Controls.Add(content); // if this is not a post back if (!this.IsPostBack) { // set to true; this.Expanded = true; } }
标记是这样的:
然后在客户端:
...[Your Content Goes Here]
向控件添加Text属性,并将此text属性链接到服务器上运行的标签,该标签位于开始和结束div之间。
您可能需要小心,如果您将服务器控件放在内容区域中该怎么办…
您可能只想让控件从面板inheritance并覆盖您需要调整的任何方法? 根据您需要定制的内容,可能更容易或更难
上述就是C#学习教程:用户控件的开始和结束标记之间不允许有内容分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public class MyDiv : Panel { }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1029212.html