【问题标题】:User control (ascx) in asp.net and its bindable properties dont show up in the data containerasp.net 中的用户控件 (ascx) 及其可绑定属性不显示在数据容器中
【发布时间】:2026-02-01 09:10:02
【问题描述】:

当我将具有可绑定属性的用户控件添加到 asp.net 页面时,当我单击 Repeater-Listview 上的编辑数据绑定时,我在设计器对话框中看不到它的可绑定属性

我应该添加任何其他属性描述符吗?

标记在中继器或类似控件中是这样的

<uc1:Menu ID="Menu1" superman="<% Eval("userid") %>" runat="server" />

关于我只使用的可绑定属性

[System.ComponentModel.DefaultBindingProperty("superman")]
    [System.ComponentModel.Bindable(true)]
    public int superman
    {
        get;
        set;
    }

People discuss it here but they couldn't find a solution


【问题讨论】:

  • 您创建的用户控件是从任何类继承的吗?例如像 Repeater 或 ListView ?
  • 可以粘贴代码吗?如果可能的话
  • @MMK 不,它不继承任何类。我尝试使用自定义 html 属性将值传递给用户控件
  • 您为什么要使用智能标签中的向导设置这些值?它所要做的就是将您输入的内容粘贴到标记中,因此不妨在那里执行(或者花哨并在您的代码隐藏中执行)。我看不出这值你的 50 个代表。顺便说一句:我被您的屏幕截图弄糊涂了,所以我会在这里说:要进入您显示的数据绑定向导,您必须右键单击设计视图中的 DataList 并选择“编辑模板”->“项目模板” ",然后您将看到自定义用户控件,当您将鼠标悬停在它上面时,您将看到“用户控制任务”的智能标签。
  • @MikeTeeVee 将其添加为答案并中奖

标签: asp.net data-binding listview user-controls properties


【解决方案1】:

我认为您只需键入即可进行标记, 用户控件必须在设计视图中拖放到页面上。 试试这个可能会有所帮助。

【讨论】:

    【解决方案2】:

    我认为这可能是 Visual Studio 的问题,我还没有找到显示用户控件属性的方法,但是,即使该属性没有出现在选项框中,您仍然可以绑定该属性:

    这是你绑定它的方式:

    在用户控制代码后面:

    [Bindable(true)]
    public string MyProperty
    {
        get
        {
            return this.lblMessage.Text;
        }
        set
        {
            this.lblMessage.Text = value + DateTime.Now.ToString();
        }
    }
    

    在 ASCX 文件中:

    <asp:Label ID="lblMessage" Text="something" runat="server" />
    

    在 ASPX 页面中:

    <asp:DataList runat="server" ID="dataList" Width="50%" 
        DataSourceID="ObjectDataSource1">
        <ItemTemplate>
            <uc1:WebUserControl1 runat="server" ID="myUC" MyProperty='<%# Eval("Name") %>' />
        </ItemTemplate>
    </asp:DataList>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        SelectMethod="GetProducts" TypeName="WebApplication1.Repository">
    </asp:ObjectDataSource>
    

    简单的只需在标签中添加你在你的UC中创建的属性:

    <uc1:WebUserControl1 runat="server" ID="myUC" MyProperty='<%# Eval("Name") %>' />
    

    这是输出:

    【讨论】:

    • 这也是我自己得出的结论。感谢您的努力。您的回答说明了这种情况。
    • 什么时候可以访问自定义属性,如果它绑定在 aspx 页面中?意思是在UserControl.Page_Load方法中property == null,那么在哪里可以使用呢?
    最近更新 更多