如果我在asp.net中添加runat =“server”属性,则href单击问题

时间:2011-03-09 04:26:07

标签: asp.net href

这是aspx页面上的一个href

ASPX:

<a id="hrfReport" href="<%=sApplicationURL%>Reports.aspx">Report</a>

背后的代码:

sApplicationURL = "http://localhost/";

现在,如果我点击href页面重定向到报告页面,但如果我添加runat =“server”属性,那么href点击不起作用。实际上我想在特定条件下禁用它。

有谁知道怎么做?

4 个答案:

答案 0 :(得分:4)

您无法在服务器标记中使用<%=someVal%>构造。编译器基本上将其转换为Response.Write(someVal)

您可以使用<%#someVal%>构造,但您需要DataBind()该值。例如:

<强> ASPX:

<a id="hrfReport" href='<%#sApplicationURL + "Reports.aspx"%>' runat="server">Report</a>

背后的代码:

sApplicationURL = "http://localhost/";
hrfReport.DataBind();

...替代地

如果您有服务器控件,可以从后面的代码设置其属性,如下所示:

<强> ASPX:

<a id="hrfReport" runat="server">Report</a>

背后的代码:

hrfReport.HRef = sApplicationURL + "Reports.aspx";

答案 1 :(得分:0)

将它放在ASPX页面中。

<asp:HyperLink runat="server" ID="hrfReport" NavigateUrl="~/Reports.aspx" Text="Report"></asp:HyperLink>

答案 2 :(得分:0)

构建链接并在后面的代码中启用/禁用它:

Sub Page_Load()
  HyperLink1.NavigateUrl = sApplicationURL & "Reports.aspx"
  HyperLink1.Enabled = "false"
End Sub

然后只需在页面上添加您的链接:

<asp:HyperLink ID="HyperLink1" runat="server">Report</asp:HyperLink>

答案 3 :(得分:0)

不使用HyperLink控件,您可以使用href:

<a href="#" runat="server" id="lnkLogout" onserverclick="lnkLogout_Click"><i class="fa fa-sign-out fa-fw"></i> Logout</a>

代码背后:

Protected Sub lnkLogout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkLogout.DataBinding
    FormsAuthentication.SignOut()
    HttpContext.Current.Session.Abandon()
    Try
        Response.Redirect("../Login/login.aspx")
    Catch ex1 As ThreadAbortException
        Thread.ResetAbort()
    End Try
End Sub