如何将查询字符串变量传递给其上具有runat =“server”标记的链接

时间:2017-08-15 13:46:49

标签: c# asp.net webforms

<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"并仍能使其行为与第一个链接相同?

2 个答案:

答案 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;
    }