【问题标题】:Assign objects to properties inside for each doen't work将对象分配给 foreach 内的属性不起作用
【发布时间】:2011-04-30 07:48:22
【问题描述】:

我如何在 asp.net 页面上的每个语句中呈现我的 userControl“GaleriaDetalhe”列表。通过这种方式,它返回了这个错误:

无法从“DataSource”属性的字符串表示“”创建“SKortal.ImageGalery.ImageGalery”类型的对象。

如何将 foreach 当前对象直接分配给我的用户控件的数据源属性?怎么样?

<%@ Register src="GaleriaDetalhe.ascx" tagname="GaleriaDetalhe" tagprefix="uc1" %>

<%  For Each g As ImageGalery In DataSource%>
<uc1:GaleriaDetalhe ID="GDetail" runat="server" DataSource="<% g %>" />
<% Next%>

更具体地说,我假装知道如何将对象分配给标记中的属性?

提前致谢,

【问题讨论】:

    标签: asp.net user-controls foreach datasource


    【解决方案1】:

    这不是创建列表的正确方法。以太使用中继器,每次你需要使用Page.LoadControl("GaleriaDetalhe.ascx");@

    使用中继器呈现控件列表。

    【讨论】:

    • 好的,我知道,通常我使用中继器!!,这是一种体验,我正在尝试寻找一些更“无视图”的新解决方案。我的当务之急是知道如何将对象分配给标记中的属性。没有数据绑定!
    • @Flavio,如果赢得无视图状态,则禁用视图状态,否则您需要每次在循环中加载控件,然后手动运行并初始化它。
    • 有没有办法将对象分配给用户控件的属性? (我对此感兴趣!,忘记for each!)在标记方式上,不要假装覆盖数据绑定!
    • @Flavio 您控件上的每个公共 val/对象都可以在您使用 LoadControl 创建它之后分配它。
    【解决方案2】:

    您需要在代码中创建用户控件,并将它们添加到PlaceHolder。诀窍是使用Reference 而不是Register(在ASPX 页面中),因为这允许您像创建任何其他对象一样创建用户控件,而无需Page.LoadControl(控件出现在ASP 命名空间内)。然后,您可以将对象传递给它们的构造函数,或者在其中创建公共属性。

    我的blog post here 显示了步骤。

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 2013-03-25
      • 1970-01-01
      • 2018-04-16
      • 2020-05-22
      • 2011-09-22
      • 1970-01-01
      • 2011-02-17
      • 2018-11-18
      相关资源
      最近更新 更多