【发布时间】:2010-06-07 15:13:08
【问题描述】:
我已经构建了一个带有 ImageURL 属性的自定义控件。在设计时,当我在 ImageUrl 中输入图像时,我收到以下错误消息
创建控件时出错 - 无法在属性“ImageUrl”上设置 AmazeDropDownList1'~/Image/help.png'。
<myCompany:MyCompanyDropDownList ID="AmazeDropDownList1" runat="server" ImageUrl="~/Image/help.png">
</myCompany:MyCompanyDropDownList>
我的控件的代码如下所示:
[DefaultValue("")]
[Editor("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
[Description("Image_ImageUrl")]
[Bindable(true)]
[Category("Appearance")]
[UrlProperty]
public virtual string ImageUrl
{
get
{
string str = (string)this.ViewState["ImageUrl"];
if (str != null)
{
return str;
}
return string.Empty;
}
set
{
this.ViewState["ImageUrl"] = value;
}
}
我继承自 TextBox,下面是我的渲染方法:
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
// Call the base class's Render method.
base.Render(writer);
if (!string.IsNullOrEmpty(this.ImageUrl))
{
// Create and render a new Image Web control.
System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image();
image.ID = "Image1";
image.ImageUrl = ImageUrl;
image.AlternateText = ImageAltText;
image.RenderControl(writer);
}
}
对于修复错误消息的任何帮助,我将不胜感激。
【问题讨论】:
-
我看到你从 Reflector 中“被拉”了出来。 :O)
-
你是否适当地实现了
RenderContents或AddAttributesToRender方法? -
你使用的是什么版本的视觉工作室?
-
2008 我有一个渲染方法我有一个 RenderContents 或 AddAttributesToRender 因为我从 TextBox 继承
-
听起来很像我在 2005 版中使用 Visual Studio 缓存时遇到的错误。请在下面尝试我的答案。
标签: asp.net webforms custom-controls