自定义控件设计时的ImageUrl

3

我已经建立了一个带有ImageUrl属性的自定义控件。在设计时,当我输入一个图像到ImageUrl中时,我会收到以下错误信息:

创建控件时出错 - 无法将'~/Image/help.png'设置为属性'ImageUrl'。

<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继承,以下是我的渲染方法:
```

我正在从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) - AMissico
1
你是否已经根据需要实现了 RenderContentsAddAttributesToRender 方法? - AMissico
1
你使用的 Visual Studio 版本是哪个? - djdd87
2008 年,我有一个渲染方法,我已经得到了 RenderContents 或 AddAttributesToRender,因为我是从 TextBox 继承而来的。 - Burt
1
听起来很像我在2005版本的Visual Studios缓存中遇到的一个错误。请尝试下面的答案。 - djdd87
我同意GenericTypeTea的观点,你需要清除Web缓存。这是一个经常出现的问题,特别是在C# Web站点解决方案中。 - AMissico
1个回答

1

我想知道Visual Studios是否正在使用错误的缓存版本控件?

您可以尝试自己清除缓存。这里有说明

或者,您可以尝试从工具箱中删除控件(如果有的话),从页面中删除所有控件引用(即<%@ Register...标记),重新构建所有内容,然后重新添加控件。

最后一个猜测是,在Web.config中引用控件而不是在页面上:

<system.web>
 <controls>
  <add tagPrefix="my" namespace="myCompany.Controls" 
            assembly="myCompany.Controls"/>
 </controls>
</system.web>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接