Тег сервера не проанализирован в 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