<a id="link1" href="home.aspx?theYear=<%=(selectYear)%>"></a>
VS
<a runat="server" id="link2" href="home.aspx?theYear=<%=(selectYear)%>"></a>
在我的代码背后,我定义了public string selectYear="2017";
。
我的第一个链接按预期工作。它将selectYear的实际值作为查询字符串变量。
但第二个(runat="server"
)不会这样做。
我如何拥有runat="server"
并仍能使其行为与第一个链接相同?
答案 0 :(得分:1)
<%= %>是Response.Write
的快捷方式,因此无法在您的用户控件中使用。
因此可以使用DataBinding标记<%# %>
来实现,但您必须确保有人会调用DataBind
方法 - 您可以手动调用DataBind,link2.DataBind()
或调用页面DataBind,以防你有很多像这样的链接。
<a runat="server" id="link2" href="home.aspx?theYear=<%# selectYear%>"></a>
另一种实现方法是通过简单地从服务器端设置NavigateUrl:
link2.NavigateUrl = $"home.aspx?theYear={selectYear}";
答案 1 :(得分:1)
使用runat =“server”,可以在后面的代码中访问此锚点。所以我建议你在代码中写下如下代码:
public string selectYear { get { return "2017"; } }
protected void Page_Load(object sender, EventArgs e)
{
link2.HRef = "home.aspx?theYear=" + selectYear;
}