【问题标题】:How to call a code-behind method from aspx page?如何从 aspx 页面调用代码隐藏方法?
【发布时间】:2012-09-27 01:38:09
【问题描述】:

我有一个对象,其中包含一个名为 DevList 的字段,其定义如下

public List<string> DevList { get; set; }

我还定义了一个名为 DisplayListOfDevelopers 的方法,它应该连接开发人员列表并将其显示为一个字符串。

这就是我从 aspx 调用方法的方式。

<asp:TemplateField HeaderText = "Developer(s)">
 <ItemTemplate>
   <asp:Label 
        ID="_lblDevList" 
        runat="server" 
        Text= '<%# DisplayListOfDevelopers(DevList) %>'>
   </asp:Label>
 </ItemTemplate>
</asp:TemplateField>

但是,我收到此错误:名称“DevList”在当前上下文中不存在

我错过了什么吗?

编辑

_gvStatus = ds;
_gvStatus.DataBind();

其中 ds 目前只是包含 DevList 的对象列表。

感谢您的帮助

【问题讨论】:

  • 您在代码隐藏中哪里定义了变量?
  • DevList 属性是否位于连接到 gridview/listview 数据源的类中?
  • 是否要显示每一行的完整列表?
  • 是的,例如,我想在每个名称的末尾添加一个
    ,以便受项目影响的开发人员从上到下显示,而不是彼此相邻。这就是 DisplayListOfDevelopers 应该完成的功能。

标签: asp.net data-binding


【解决方案1】:

假设你的班级是这样的:

public class MyItem
{
    public List<string> DevList { get; set; }
}

还有那个

ds = List<MyItem>();

这样做:

在您的代码隐藏中:

protected string DisplayListOfDevelopers(object _devList)
{
    //Cast your dev list into the correct object
}

在您的标记中:

<asp:TemplateField HeaderText = "Developer(s)">
 <ItemTemplate>
   <asp:Label 
        ID="_lblDevList" 
        runat="server" 
        Text= '<%# DisplayListOfDevelopers(Eval("DevList")) %>'>
   </asp:Label>
 </ItemTemplate>
</asp:TemplateField>

请务必确保代码隐藏中的函数是受保护的或公开的。

【讨论】:

  • 谢谢。它现在正在工作。但是,我听说 Eval 对性能不利。
  • 相对于什么?和/或您有参考资料吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多