我正在尝试为我的页面中的超链接添加条件.
而不是只使用像这样的特定链接:<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");
}
Run Code Online (Sandbox Code Playgroud)
但这没效果.谁能帮助我弄清楚如何使Tutorial链接正常工作?非常感谢你提前!!!
Jer*_*ins 14
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";
}
}
Run Code Online (Sandbox Code Playgroud)
真的,最好先检查一下你是否真的有用户.
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";
}
}
Run Code Online (Sandbox Code Playgroud)
哇,你对asp.net的运作方式有很大的误解.
这行代码
System.Diagnostics.Process.Start("help/AdminTutorial.html");
Run Code Online (Sandbox Code Playgroud)
不会将管理员用户重定向到新站点,而是在服务器(通常是浏览器,IE)上启动新进程并加载站点.那肯定不是你想要的.
一个非常简单的解决方案是在page_load方法中更改链接的href属性.
你的aspx代码:
<a href="#" runat="server" id="myLink">Tutorial</a>
Run Code Online (Sandbox Code Playgroud)
你的codebehind/cs代码是page_load:
...
if (userinfo.user == "Admin")
{
myLink.Attributs["href"] = "help/AdminTutorial.html";
}
else
{
myLink.Attributs["href"] = "help/otherSite.html";
}
...
Run Code Online (Sandbox Code Playgroud)
别忘了再次在"AdminToturorial.html"上检查管理员权限以"防止"黑客行为.
| 归档时间: |
|
| 查看次数: |
107751 次 |
| 最近记录: |