2013-04-03 15 views
2

我有以下兩個按鈕:ASP.NET標籤不擴大的OnClientClick

<asp:Button ID="btnVote" runat="server" Text="Vote!" PostBackUrl="<%$RouteUrl:id=2, routename=Results%>"/><br /> 
<asp:Button ID="btnResults" runat="server" Text="Results ->" OnClientClick="location.href='<%$RouteUrl:id=2, routename=Results%>'"/> 

第一<%$ %>擴大爲目的,而作爲輸入的第二(!相同)一個被使用(=沒有展開)。我對ASP.NET非常陌生,來自PHP,這是來自我的學習/測試網站。
我在做什麼錯,我該如何解決?

回答

2

ASP.NET表達式語法(<%$ ... %>)只能用於將值直接分配給服務器控件的屬性。我認爲你遇到的問題是表達式語法嵌入在一個字符串中,而不是直接綁定到「OnClientClick」屬性。

試圖改變你的第二個按鈕

<asp:Button ID="btnResults" runat="server" Text="Results ->" OnClientClick="<%$RouteUrl:id=2, routename=Results%>" /> 

如果這樣的作品,您可能需要修改表達式返回你需要額外的文本。或者,創建另一條返回所述信息的路線(包含在「location.href」屬性中的當前值)。

您可以在這裏找到關於這些表達式的更多信息:ASP.NET Expressions Overview

+0

修改後的按鈕有效,但現在當然按鈕不起作用。我將如何「修改您的表達以返回您需要的額外文本」? – baruch

+0

@baruch啊哈!這是個好問題。我不太熟悉你在做什麼:'<%$ RouteUrl:id = 2,routename = Results%>'。但是,您可以製作另一個路由名稱(我們稱之爲「ResultsLink」),並讓該路線返回您嘗試構建的整個字符串?所以,「* location.href ='WhatEverTextYourRouteReturns.com'*」 – jadarnel27

+0

不,我不能。 'RouteUrl'由'asp.net'提供。它根據它提供的參數構建一個漂亮的URL。無論如何,我只是把整個事情推到代碼隱藏的地步。 – baruch