C#自定义控件将内部文本作为字符串
作者:互联网
好吧,我正在开发一个可以包含一些javascript的自定义控件,并将其从页面中读入字符串字段.
这是updatepanel中动态JavaScript的变通方法.
目前,我已经开始工作,但是如果我尝试在块中放置一个服务器标签:
<custom:control ID="Custom" runat="server">
<%= ControlName.ClientID %>
</custom:control>
编译器不喜欢它.我知道这些都是在运行时生成的,因此可能与我正在做的事情不兼容,但有没有人知道我怎么能让它工作?
编辑
错误消息是:此上下文不支持代码块
编辑2
控制:
[DataBindingHandler("System.Web.UI.Design.TextDataBindingHandler, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), ControlValueProperty("Text"), DefaultProperty("Text"), ParseChildren(true, "Text"), AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal), AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public class CustomControl : Control, ITextControl
{
[DefaultValue(""), Bindable(true), Localizable(true)]
public string Text
{
get
{
return (string)(ViewState["Text"] ?? string.Empty);
}
set
{
ViewState["Text"] = value;
}
}
}
解决方法:
编译器是写入的,服务器端代码块仅在ITemplate的上下文中受支持.
“Text”属性应该像这样设置……
<custom:control ID="Custom" runat="server" Text="YourText">
使用ITemplate,您可以在代码隐藏中声明它…
public ITemplate Text
{
get;
set;
}
但是你需要这样做……
<custom:control ID="Custom" runat="server">
<Text><%= ControlName.ClientID %></Text>
</custom:control>
话虽如此,如果您有自定义控件,为什么不在后面的代码中执行此操作…
this.text = ((ITextControl)Page.FindControl(controlName)).Text;
麻烦的是,它不是很有活力.
我赞成模板化选项.
虽然难以实施.
标签:c,asp-net,custom-controls 来源: https://codeday.me/bug/20190710/1422553.html