Я использую новую функцию маршрутизации в ASP.NET 4 (веб-формы, а не MVC). Теперь у меня есть asp: ListView, привязанный к источнику данных. Одним из свойств является ClientID
, который я хочу использовать для ссылки из элементов ListView на другую страницу. В global.asax
я определил маршрут:Как создать RouteUrls с параметрами привязки данных декларативно?
System.Web.Routing.RouteTable.Routes.MapPageRoute("ClientRoute",
"MyClientPage/{ClientID}", "~/Client.aspx");
так, что, например http://server/MyClientPage/2
является действительной URL, если ClientID = 2 существует.
В пунктах ListView У меня есть жерех: гиперссылкой так, что я могу создать ссылку:
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%# "~/MyClientPage/"+Eval("ClientID") %>' >
Go to Client details
</asp:HyperLink>
Хотя это работает, я бы предпочел использовать RouteName вместо закодированного маршрута, используя выражение RouteUrl. Например, с постоянной ClientID = 2 я мог бы написать:
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl="<%$ RouteUrl:ClientID=2,RouteName=ClientRoute %>" >
Go to Client details
</asp:HyperLink>
Теперь мне интересно, если я могу совместить синтаксис выражений маршрута и синтаксис Databinding. В принципе, мне нравится заменять константу 2
выше на <%# Eval("ClientID") %>
. Но делать это наивно ...
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%$ RouteUrl:ClientID=<%# Eval("ClientID") %>,RouteName=ClientRoute %>' >
Go to Client details
</asp:HyperLink>
... не работает: <%# Eval("ClientID") %>
не оценивается, но рассматривается как строка. Игра с несколькими вариантами кавычек также не помогла до сих пор (ошибки Parser в большинстве случаев).
Вопрос: Возможно ли вообще, чего я пытаюсь достичь здесь? И если да, каков правильный путь?
Спасибо заранее!
Отлично, отлично работает! Я только что изменил разметку, используя это решение. Большое спасибо! – Slauma
Примечание: по крайней мере, на C# вам нужно использовать «а не» для вашего NavigateUrl. Просто скопируйте примеры 1 для 1, и все будет в порядке. – scottheckel