1

我在继承自System.Web.UI.Control.

我想在标记中添加与该控件的属性不对应的属性,例如

<myControls:Hyperlink runat=server custom-client-side-attr="1"></<myControls:Hyperlink>

我遇到的问题是异常

类型“myControls.Hyperlink”没有名为“custom-client-side-attr”的公共属性。

我试过PersistChildren(false)了,但这并不能解决问题。自从我深入 ASP.NET Web 窗体以来已经有一段时间了,不记得它是如何完成的。

4

3 回答 3

3

您必须在服务器代码中添加它们:

hl1.Attributes["custom-client-side-attr"] = "1";

您仍然可以在标记中执行此操作 - 您必须在声明之前执行此操作:

<% hl1.Attributes["custom-client-side-attr"] = "1"; %>
<myControls:Hyperlink ID="hl1" runat=server custom-client-side-attr="1"></<myControls:Hyperlink>
于 2013-09-03T17:45:47.727 回答
0

如果你想要这样的属性,你必须为用户控件创建一个属性。您可以使用视图状态或隐藏控件来保持属性的持久性。您的代码可能如下所示:

public string  custom_client_side_attr 
{
    get {
        if (ViewState["custom_client_side_attr"] != null)
        {
            return ViewState["custom_client_side_attr"].ToString();
        }
        return string.Empty;
    }
    set
    {
        ViewState["custom_client_side_attr"] = value;
        //set custom atribute for the hyperlink here
    }
}

并通过标记访问属性:

<myControls:Hyperlink id="myCustomControl" runat=server custom_client_side_attr="1"></<myControls:Hyperlink>

或在代码中:

myCustomControl.custom_client_side_attr="1";
于 2013-09-03T17:54:27.457 回答
0

如果您的自定义控件派生自WebControl它似乎可以按您的意愿工作。

于 2019-05-25T14:38:35.723 回答