1

私は ASP.NET に比較的慣れていないことを認めざるを得ず、恥ずべきことに、クライアント側のページでサーバー タグをまだ実際に使用したことがありません。私のページには、データテーブルの行を反復処理し、以下のタグを使用して各アイテムのハイパーリンク オブジェクトを表示するリピーターがあります。

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/DiseaseInfo/Syndrome.aspx?SyndromeID=<%# Eval('SYNDROME_ID')%>&SpeciesID=<%# Eval('SPECIES_ID')%>" Text='<%# Eval("SYNDROME_NAME").ToString%>'></asp:HyperLink>

私が抱えている問題は、サーバーが <%# %> タグをレンダリングしないことです。この同じリンクをタグに入れると、問題なく機能します。ハイパーリンクがサーバー側で既にレンダリングされているという事実に関係していると確信していますが、それを正しく機能させるために変更する方法がわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

2

一重/二重引用符の順序を逆にします。

<asp:HyperLink runat="server" NavigateUrl='~/DiseaseInfo/Syndrome.aspx?
  SyndromeID=<%# Eval("SYNDROME_ID")%>&SpeciesID=<%# Eval("SPECIES_ID")%>'
  Text='<%# Eval("SYNDROME_NAME").ToString()%>'>
</asp:HyperLink>

これは通常、JavaScript / HTML レベルでは問題になりませんが、C# / VB の正しい引用符は、Eval()メソッド内で使用する必要がある二重引用符です。

少し良い方法は、メソッドを呼び出してこのやや複雑な URL を返すことです。

<asp:HyperLink runat="server" NavigateUrl='<%# GetUrl() %>' />

protected string GetUrl()
{
    return string.format("Syndrome.aspx?SyndromeID={0}...", Eval("SYNDROME_ID");
}
于 2013-01-02T23:21:56.177 に答える
0

これが私がこれをどのように処理したかです:

Public Sub Repeater2_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
    If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then
        Dim SpeciesID As String = CType(e.Item.DataItem, System.Data.DataRowView)("SPECIES_ID").ToString
        Dim DiseaseID As String = CType(e.Item.DataItem, System.Data.DataRowView)("DISEASE_ID").ToString
        Dim DiseaseName As String = CType(e.Item.DataItem, System.Data.DataRowView)("DISEASE_NAME").ToString
        Dim Hyperlink = CType(e.Item.FindControl("Hyperlink1"), HyperLink)

        Hyperlink.NavigateUrl = String.Format("~/DiseaseInfo/Disease.aspx?DiseaseID={0}&SpeciesID={1}", DiseaseID, SpeciesID)
        Hyperlink.Text = DiseaseName
    End If
End Sub
于 2013-01-03T19:43:51.920 に答える