我正在使用 ASP.NET 4 中的新路由功能(Web 表单,而不是 MVC)。现在我有一个绑定到数据源的 asp:ListView。其中一个属性是ClientID
我想用它从 ListView 项目链接到另一个页面。在global.asax
我定义了一条路线:
System.Web.Routing.RouteTable.Routes.MapPageRoute("ClientRoute",
"MyClientPage/{ClientID}", "~/Client.aspx");
例如http://server/MyClientPage/2
如果 ClientID=2 存在,则为有效 URL。
在 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") %>
不被评估但被视为字符串。到目前为止,使用几种引号也没有帮助(大多数情况下是解析器错误)。
问题:我在这里想要实现的目标是否可能实现?如果是,正确的方法是什么?
先感谢您!