当我在aspx页面上使用锚标记时,如下所示
<a href="~/pages/page.aspx?id=<%= ServervariableName %>"> test </a>
它将获得正确分配给id的变量值,但它不会正确地路由页面,因为如果没有'a'标记上的runat =“server”属性,将不会评估〜。但是一旦我添加了runat服务器属性,它就不再评估服务器变量名了。有没有人知道这是如何工作的,或者我应该做些什么来处理它们?
答案 0 :(得分:12)
尝试以下方法:
href="<%= ResolveUrl("~/pages/page.aspx") + "?id=" + ServervariableName %>"
只有在您不添加runat="server"
时才会有效。
答案 1 :(得分:2)
您无法使用此语法设置服务器端控件的属性。
相反,您可以在代码隐藏中设置属性,或者使用数据绑定语法(<%# expression %>
)并在代码隐藏中调用DataBind()
。
答案 2 :(得分:2)
如果你想要runat = server和虚拟路径:
如果要在.aspx文件中绑定变量但仍需要runat =“server”,则必须使用an expression builder。然后您的语法变为
&lt; a href =“〜/ folder / page.aspx?id =&lt;%$ MyVars:ServerVariableName%&gt;” runat =“server”&gt;链接&lt; / a&gt;
答案 3 :(得分:-2)
我不确定为什么runat="server"
阻止评估<%= Property =>
,但您需要runat="server
“来评估〜根。根据MSDN,
你可以使用〜运算符 服务器中与路径相关的属性 控制。 〜运算符被识别 仅适用于服务器控件和服务器 码。你不能使用〜运算符 对于客户元素。
无论如何,这可能会让你前进。
ASPX
<asp:HyperLink ID="myHyperLink" runat="server" NavigateUrl="~/MyPage.aspx?id=<%=MyProperty %>" Text="Click Me" />
CS
myHyperLink.NavigateUrl = string.Format("~/MyPage.aspx?id={0}", MyProperty);