asp.net - 如何以声明方式创建带有数据绑定(bind)参数的 RouteUrls?

标签 asp.net data-binding url-routing asp.net-4.0 asp.net-routing

我正在使用 ASP.NET 4(Web 表单,而不是 MVC)中的新路由功能。现在我有一个绑定(bind)到数据源的 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>

虽然这可行,但我更愿意通过使用 RouteUrl 表达式来使用 RouteName 而不是硬编码的路由。例如,使用常量 ClientID=2 我可以写:
<asp:HyperLink ID="HyperLinkClient" runat="server" 
    NavigateUrl="<%$ RouteUrl:ClientID=2,RouteName=ClientRoute %>" >
    Go to Client details
</asp:HyperLink>

现在我想知道是否可以将路由表达式语法和数据绑定(bind)语法结合起来。基本上我喜欢替换常量 2以上由<%# Eval("ClientID") %> .但是以天真的方式这样做......
<asp:HyperLink ID="HyperLinkClient" runat="server" 
    NavigateUrl='<%$ RouteUrl:ClientID=<%# Eval("ClientID") %>,RouteName=ClientRoute %>' >
    Go to Client details
</asp:HyperLink>

... 不起作用:<%# Eval("ClientID") %>不被评估,但被视为一个字符串。到目前为止,使用几种引号也没有帮助(大多数情况下是解析器错误)。

问题:我在这里想要实现的目标有可能吗?如果是,正确的方法是什么?

先感谢您!

最佳答案

使用System.Web.UI.Control.GetRouteUrl :

VB:

<asp:HyperLink ID="HyperLinkClient" runat="server"  
    NavigateUrl='<%# GetRouteUrl("ClientRoute", New With {.ClientID = Eval("ClientID")}) %>' > 
    Go to Client details 
</asp:HyperLink>

C#:
<asp:HyperLink ID="HyperLinkClient" runat="server"  
    NavigateUrl='<%# GetRouteUrl("ClientRoute", new {ClientID = Eval("ClientID")}) %>' > 
    Go to Client details 
</asp:HyperLink>

关于asp.net - 如何以声明方式创建带有数据绑定(bind)参数的 RouteUrls?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935367/

相关文章:

javascript - 字符串属性未反序列化

c# - 如何使用 try-catch block 连接到 Entity Framework ?

android - 数据绑定(bind)错误 : old values should be followed by new values. 参数 2 必须与参数 3 的类型相同

android - 如何使用数据绑定(bind)从 xml 调用 Edittext onEditorAction

c# - 如何在 ASP.NET 中创建带有节和标题的表?

c# - HttpUtility.ParseQueryString 不解码特殊字符

java - axis2 中的数据绑定(bind)

javascript - react-router 1.0 路由被express.js服务器拾取

python - Q : google app engine app. yaml 如何处理 main.py 中的 url?

asp.net - Webforms 路由 - 不同页面的相同签名?