ASP.Net - 来自标记的调用方法,包括数据绑定

use*_*886 11 c# asp.net

我在ASP.NET中的C#中有一个用户控件.此用户控件在代码隐藏中有一个方法,定义如下:

protected string GetGreeting(string name)
{
  if (String.IsNullOrEmpty(name))
  {
    return "Hello";
  }
  else
  {
    return "Hello " + name;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的标记如下所示:

<asp:Repeater ID="listRepeater" ClientIDMode="Static" runat="server" OnLoad="listRepeater_Load">
    <HeaderTemplate>
        <table id="listTable" style="width:100%;">
            <thead><tr>
                <th>Greeting</th>
                <th>Actions</th>
            </tr></thead>
            <tbody>    
    </HeaderTemplate>

    <ItemTemplate>
            <tr>
                <td><%# GetGreeting("FullName")%></td>
                <td><a href='#'>view info</a></td>
            </tr>
     </ItemTemplate>

     <FooterTemplate>
            </tbody>
        </table>
    </FooterTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

如何在我的数据源中绑定记录的FullName属性?现在,我一直看到"Hello FullName".我想看看像"你好约翰史密斯"这样的东西.我究竟做错了什么?

谢谢!

Jes*_*nan 11

在你的.aspx中,你正在打电话GetGreeting("FullName").这传递了"FullName"字面意思.

尝试

GetGreeting(Eval("FullName").ToString())
Run Code Online (Sandbox Code Playgroud)


ale*_*exm 8

以下应该有效:

<%# GetGreeting(DataBinder.Eval(Container.DataItem, "FullName").ToString()) %> 
Run Code Online (Sandbox Code Playgroud)

或更短的形式:

<%# GetGreeting(Eval("FullName").ToString()) %> 
Run Code Online (Sandbox Code Playgroud)