我在ASP.NET 4(Web表單,而不是MVC)中使用新的路由功能。現在我有一個綁定到數據源的asp:ListView。其中一個屬性是ClientID
,我想用它將ListView項鍊接到另一頁。在global.asax
我已經定義了一個路線:如何以聲明方式創建帶有數據綁定參數的RouteUrls?
System.Web.Routing.RouteTable.Routes.MapPageRoute("ClientRoute",
"MyClientPage/{ClientID}", "~/Client.aspx");
使例如http://server/MyClientPage/2
是有效的URL,如果客戶端ID = 2的存在。
在ListView項目我有一個asp:超鏈接,這樣我可以創建鏈接:
<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>
現在我想知道我是否可以結合路線表達式語法和數據綁定語法。基本上我喜歡用<%# Eval("ClientID") %>
替換上面的常量2
。但是,在一個簡單的方式做這...
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%$ RouteUrl:ClientID=<%# Eval("ClientID") %>,RouteName=ClientRoute %>' >
Go to Client details
</asp:HyperLink>
...不起作用:<%# Eval("ClientID") %>
不評價,但認爲作爲一個字符串。四處引用幾種引號也沒有幫助(大多數情況下,解析器錯誤)。
問題:我在這裏試圖實現的是否可能?如果是,那麼正確的方法是什麼?
預先感謝您!
很好,工作正常!我剛剛使用此解決方案更改了我的標記。非常感謝你! – Slauma 2010-06-06 19:16:29
注意:至少在C#中,您需要對NavigateUrl使用'and not'。只需將示例1複製到1即可。 – scottheckel 2013-07-18 16:45:40