asp.net 中的用户控件 (ascx) 及其可绑定属性不会显示在数据容器中

发布于 2024-12-06 19:24:51 字数 712 浏览 1 评论 0原文

当我将具有可绑定属性的用户控件添加到 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在这里讨论,但他们找不到解决方案

这是有问题的地方


这是用户控件的定义

When I add a user control which has bindable properties to an asp.net page I do not see its bindable properties on the designer's dialog box when I click the edit Data bindings on the Repeater-Listview

should I add any other propery descriptors?

the markup would be like this inside a repeater or similar control

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

on the bindable property I only use

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

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

This is the problematic place


And this is the definition of the user control

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

快乐很简单 2024-12-13 19:24:52

我认为这可能是 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") %>' />

这是输出:

I think this might be a problem with Visual Studio, I have not found a way to show the properties of user controls, but still, you can bind the property even when it does not appear in the options box:

This is how you bind it:

In the user control code behind:

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

In the ASCX file:

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

In the ASPX page:

<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>

Simple just add the property you created in your UC in the tag:

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

This is the output:

enter image description here

囚我心虐我身 2024-12-13 19:24:52

我认为你只需通过键入来进行标记,
用户控件必须拖放到设计视图中的页面。
尝试一下这可能会有所帮助。

I think you just make the markup by typing it,
the user control must be drag and drop to the page in the design view.
try this may helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文