Я использую новую функцию маршрутизации в ASP.NET 4 (веб-формы, а не MVC). Теперь у меня есть asp: ListView, который связан с источником данных. Одним из свойств является ClientID
, которое я хочу использовать для связи элементов ListView с другой страницей. В global.asax
я определил маршрут:
System.Web.Routing.RouteTable.Routes.MapPageRoute("ClientRoute",
"MyClientPage/{ClientID}", "~/Client.aspx");
так, например, http://server/MyClientPage/2
является действительным URL, если ClientID = 2 существует.
В элементах ListView у меня есть asp: HyperLink, чтобы я мог создать ссылку:
<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>
Теперь мне интересно, смогу ли я объединить синтаксис выражения маршрута и синтаксис привязки данных. В основном я люблю заменять константу 2
выше на <%# Eval("ClientID") %>
. Но делать это наивно ...
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%$ RouteUrl:ClientID=<%# Eval("ClientID") %>,RouteName=ClientRoute %>' >
Go to Client details
</asp:HyperLink>
... не работает: <%# Eval("ClientID") %>
не оценивается, но рассматривается как строка. Игра с несколькими вариантами кавычек также не помогла (ошибки парсера в большинстве случаев).
Вопрос: Возможно ли вообще то, чего я пытаюсь достичь здесь? И если да, то как правильно?
Заранее спасибо!