如何使用C#代码将onClick事件用于超链接

本文关键字:事件 用于 超链接 onClick 何使用 代码 | 更新日期: 2023-09-27 18:19:44

我正在尝试为页面中的超链接添加条件。

我希望为不同的用户显示不同的页面,而不是只使用像<a href="help/Tutorial.html">Tutorial</a>这样的特定链接。例如,如果用户以管理员身份登录,则会向他们显示与常规用户不同的链接。

我已将我的超链接修改为:<a onclick="displayTutorial_Click">Tutorial</a>

并添加了以下代码:

    protected void displayTutorial_Click(object sender, EventArgs e)
    {
        // figure out user information
        userinfo = (UserInfo)Session["UserInfo"];
        if (userinfo.user == "Admin")
            System.Diagnostics.Process.Start("help/AdminTutorial.html");
        else
            System.Diagnostics.Process.Start("help/UserTutorial.html");            
    }

但这并没有奏效。有人能帮我弄清楚如何使教程链接正常工作吗?提前非常感谢!!!

如何使用C#代码将onClick事件用于超链接

锚标记上的onclick属性将调用客户端函数。(如果你想在点击链接时调用javascript函数,你会使用这个。)

您想要的是一个服务器端控件,如LinkButton:

<asp:LinkButton ID="lnkTutorial" runat="server" Text="Tutorial" OnClick="displayTutorial_Click"/>

这有一个OnClick属性,它将调用代码背后的方法。

进一步研究您的代码,看起来您只是试图根据用户的访问级别打开一个不同的教程。您根本不需要事件处理程序。更好的方法是在代码后面设置LinkButton控件的终点。

protected void Page_Load(object sender, EventArgs e)
{
    userinfo = (UserInfo)Session["UserInfo"];
    if (userinfo.user == "Admin")
    {
        lnkTutorial.PostBackUrl = "help/AdminTutorial.html";
    }
    else
    {
        lnkTutorial.PostBackUrl = "help/UserTutorial.html";
    }
}

实际上,最好先检查一下您是否真的拥有用户。

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["UserInfo"] != null && ((UserInfo)Session["UserInfo"]).user == "Admin")
    {
        lnkTutorial.PostBackUrl = "help/AdminTutorial.html";
    }
    else
    {
        lnkTutorial.PostBackUrl = "help/UserTutorial.html";
    }
}

哇,你对asp.net的工作原理有很大的误解。

这行代码

System.Diagnostics.Process.Start("help/AdminTutorial.html");

不会将管理员用户重定向到新网站,而是在服务器上启动一个新进程(通常是浏览器、IE)并加载网站。这肯定不是你想要的。

一个非常简单的解决方案是更改page_load方法中链接的href属性。

您的aspx代码:

<a href="#" runat="server" id="myLink">Tutorial</a>

您的codeehind/cs page_load的代码:

...
if (userinfo.user == "Admin")
{
  myLink.Attributes["href"] = "help/AdminTutorial.html";
}
else 
{
  myLink.Attributes["href"] = "help/otherSite.html";
}
...

不要忘记再次检查"上的管理员权限;AdminTutorial.html"至";防止";黑客攻击。

这可能会对您有所帮助。

在.cs页面中,

//Declare a string
   public string usertypeurl = "";
  //check who is the user
       //place your code to check who is the user
       //if it is admin
       usertypeurl = "help/AdminTutorial.html";
       //if it is other 
        usertypeurl = "help/UserTutorial.html";

在.aspx年龄通过这个变量

  <a href='<%=usertypeurl%>'>Tutorial</a>