2013-04-03 16 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