我希望能够链接到对象中的页面

时间:2014-06-13 19:08:14

标签: asp.net vb.net

我有一个asp页面,在代码behiend中我有以下for循环:

 For Each objDep In objWO.FillInfo.Dependency
        lblSO.Text &= objDep.DocNo.ToString() & ", "

 Next

我想要做的是让每个objDep成为一个链接。这可能在后面的代码中还是有更好的方法?对不起,对ASP.NET很新。

1 个答案:

答案 0 :(得分:3)

是的,你可以。几种不同的方式。一种选择是将lblSO控件的类型从Label更改为Literal<asp:Literal ID="lblSO" runat="server" />),然后将超链接附加到其中:

lblSO.Text = String.Join(", ", objWO.FillInfo.Dependency _
    .Select(Function(dep) String.Format("<a href=""Link.aspx?No={0}"">{0}</a>", _
        dep.DocNo)).ToArray())

另一种方式,也许是“ASP.NET方式”,是使用Repeater,以及依赖项列表作为数据源:

<asp:Repeater ID="rptDependencies" runat="server">
    <ItemTemplate>
        <asp:Hyperlink ID="lnkDependency" runat="server"
            Text='<%# Eval("DocNo") %>'
            NavigateUrl='<%# String.Format("~/Link.aspx?DocNo={0}", Eval("DocNo")) %>' />
    </ItemTemplate>
    <SeparatorTemplate>, </SeparatorTemplate>
<asp:Repeater>

然后在您的代码隐藏中将对象绑定到列表:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Dim objWO = '...
    If Not Page.IsPostBack Then
        rptDependencies.DataSource = objWO.FillInfo.Dependency
        rtpDependencies.DataBind()
    End If
End Sub