我有一个asp页面,在代码behiend中我有以下for循环:
For Each objDep In objWO.FillInfo.Dependency
lblSO.Text &= objDep.DocNo.ToString() & ", "
Next
我想要做的是让每个objDep成为一个链接。这可能在后面的代码中还是有更好的方法?对不起,对ASP.NET很新。
答案 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