我正在尝试在 Web 窗体上显示来自业务对象的大量属性。我当然可以创建大量标签并在代码隐藏中分配所有值,但我觉得必须有一种不那么冗长的方式。

我想要的是类似 asp:Panel 的东西,但您可以在其中指定数据源。面板似乎不支持任何类型的数据绑定(bind)。

我想要的是这样的

// C#
panel.DataSource = theCompany;
panel.DataBind();

然后:
// ASPX

<asp:Panel runat="server">
    Name: <%# Eval("Name") %>
    Phone: <%# Eval("Phone") %>
    ...
</asp:Panel>

..但我找不到任何能让我以这种方式工作的东西。

我以为我可以使用 asp:FormView 但这只会给出错误“数据源是无效类型。它必须是 IListSource、IEnumerable 或 IDataSource。”

需要注意的是,我不想调用全局 DataBind()(这在过去给我们带来了无穷无尽的问题)——我希望将数据绑定(bind)限制在页面的特定部分。

最佳答案

似乎您可以使用面板来做到这一点,但您必须首先将您的业务对象分配给页面属性,因为无法将业务对象设置为面板的“数据源”(就像您为中继器控件所做的那样,例如)。

一旦对象被分配为页面属性,您就可以在 .aspx 中使用以下语法来访问该对象的属性,而无需手动分配每个项目以控制后面代码中的值:

<%# Company.Name %>

关于c# - 是否有一个 ASP.NET 数据绑定(bind)控件(如 Repeater),它只需要一个项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24575282/

10-11 02:45
查看更多