如何使用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");
}
但这并没有奏效。有人能帮我弄清楚如何使教程链接正常工作吗?提前非常感谢!!!
锚标记上的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>