将多个<asp:hyperlink>添加到转发器</asp:hyperlink>中

时间:2010-04-15 10:16:17

标签: c# asp.net repeater

我有一个转发器控件,我想将未知数量的<asp:Hyperlink>放入模板中,例如,如果你从这开始:

<asp:Repeater runat="server" ID="PetsRepeater">
 <ItemTemplate> 
  <%#DataBinder.Eval(Container.DataItem, "Owner")%>
  <%#this.ListPets(Container.DataItem)%>
    </ItemTemplate> 
</asp:Repeater>   

并在代码背后:

public partial class test1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            PetOwner p = new PetOwner() {
                Owner = "Jimmy",
                PetNames = new List<String>() { "Nemo", "Dory" }
            };
            List<PetOwner> PetOwners = new List<PetOwner>() { p };
            PetsRepeater.DataSource = PetOwners;
            PetsRepeater.DataBind();
        }        
    }
    protected String ListPets(Object PetOwner)
    {
        StringBuilder sb = new StringBuilder();
        foreach (String Name in ((PetOwner)PetOwner).PetNames)
        {
            if (sb.Length > 0) sb.Append(", ");
            sb.Append(Name);                        
        }
        return sb.ToString();
    }
}
class PetOwner
{
    public String Owner;
    public List<String> PetNames;
}

现在假设我的转发器中没有字符串"Nemo, Dory",我想要这样的东西:

<asp:HyperLink runat=server Text="Nemo" NavigateUrl="Pet.aspx?Name=Nemo" />, 
<asp:HyperLink runat=server Text="Dory" NavigateUrl="Pet.aspx?Name=Dory" />

我该怎么做?我尝试在aspx页面中添加foreach内联,但我收到错误Invalid expression term 'foreach'

1 个答案:

答案 0 :(得分:1)

如果你需要一个asp:超链接控件,而不仅仅是一个简单的标签,你应该使用一个嵌套的转发器。 http://msdn.microsoft.com/en-us/library/aa478959.aspx