Sla*_*uma 4 asp.net data-binding asp.net-routing url-routing asp.net-4.0
我正在使用ASP.NET 4中的新路由功能(Web表单,而不是MVC).现在我有一个asp:ListView绑定到数据源.其中一个属性是ClientID我想用来从ListView项链接到另一个页面.在global.asax我已经定义了一个路线:
System.Web.Routing.RouteTable.Routes.MapPageRoute("ClientRoute",
"MyClientPage/{ClientID}", "~/Client.aspx");
Run Code Online (Sandbox Code Playgroud)
因此,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>
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但我更喜欢使用RouteUrl表达式来使用RouteName而不是硬编码路由.例如,使用常量ClientID = 2,我可以写:
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl="<%$ RouteUrl:ClientID=2,RouteName=ClientRoute %>" >
Go to Client details
</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)
现在我想知道我是否可以组合路由表达式语法和数据绑定语法.基本上我喜欢用2上面的常量替换<%# Eval("ClientID") %>.但是以天真的方式做到这一点......
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%$ RouteUrl:ClientID=<%# Eval("ClientID") %>,RouteName=ClientRoute %>' >
Go to Client details
</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)
...不起作用:<%# Eval("ClientID") %>未评估但被视为字符串.到目前为止,使用几种引号也无济于事(大多数情况下为Parser错误).
问题:我有可能在这里实现的目标吗?如果是,那么正确的方法是什么?
先感谢您!
Sam*_*ang 13
使用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>
Run Code Online (Sandbox Code Playgroud)
C#:
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%# GetRouteUrl("ClientRoute", new {ClientID = Eval("ClientID")}) %>' >
Go to Client details
</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7291 次 |
| 最近记录: |