Тег сервера не проанализирован в asp: Гиперссылка

Для начала я должен признать, что я относительно новичок в 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>

У меня проблема в том, что сервер не отображает теги <% #%>. Если я добавлю эту же ссылку в тег, она будет работать нормально. Я уверен, что это связано с тем фактом, что гиперссылка уже отображается на стороне сервера, но я не могу понять, как что-то изменить, чтобы заставить ее работать правильно. Любая помощь будет принята с благодарностью.

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");
}

Вот как я справился с этим:

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
Другие вопросы по тегам