Добавить текст после выражения

#asp.net

#asp.net

Вопрос:

На моей странице ASPX у меня есть это:

 <h3>
    <asp:HyperLink runat="server"
        NavigateUrl="<%$ Resources:Path, Article%>"
        Text='<%# Eval("title") %>' />
</h3>
 

Для NavigateUrl атрибута я хочу указать идентификатор, например

 NavigateUrl="<%$ Resources:Path, Article%>?id=4"
 

Но когда я это делаю, выражение не обрабатывается синтаксическим анализатором ASP.

Как я могу это сделать?

Комментарии:

1. @GlennFerrieLive: Да, я тоже. у вас был лучший способ?

2. я бы подписал другой подход. то есть определить ссылку программно. надеюсь, это сработало

Ответ №1:

Не делайте этого в разметке. Здесь у вас есть серверный элемент управления — дайте ему идентификатор (скажем, , ID="NavigationLink" , а затем сделайте что-то подобное в вашем файле .cs:

 void Page_Load(object sender, EventArgs e)
{
    // I'm guessing that "4" was just an example here, so fill that piece in with a function you can call to create the proper ID.
    NavigationLink.NavigateUrl = Properties.Resources.Path   Properties.Resources.Article   "?id=4" 
}
 

Редактировать: я предполагаю, что когда вы говорите <%$ Resources:Path, Article%> , что пытаетесь ссылаться на Path Article записи и в вашем файле ресурсов, но после дальнейшего размышления трудно точно сказать, что вы делаете. Можете ли вы быть более конкретным здесь?

Ответ №2:

Вы можете определить защищенную функцию в коде, лежащем в основе класса, и вызвать ее из разметки. Вот так:

 <h3>
    <asp:HyperLink runat="server"
        NavigateUrl="<%# GetNavigateUrl(Eval("ID")) %>" <%-- Passing an ID as a parameter for example --%>
        Text='<%# Eval("title") %>' />
</h3>
 

Код позади:

 // Again, idObj is just an example. Any info from the data item can be passed here
protected string GetNavigateUrl(object idObj)
{
    int id = (int)idObj;
    string urlFromResources = // retrieving the url from resources
    return urlFromResources   '?ID='   id;
}
 

Ответ №3:

Вы можете получить значения ресурсов программно, в своем коде, и установить свойство NavigateUrl оттуда.

Ответ №4:

Попробуйте String.Форматирование…

 <% =String.Format({0}?id={1}, Request.ApplicationPath, 4) %>
 

Похоже, вы подмешиваете в это какой-то другой язык (javascript?).

Кроме того, не забудьте присвоить вашим серверным элементам управления идентификатор.