繁体   English   中英

如何<a href>使用C#动态</a>设置HTML链接

[英]How to set html link <a href> dynamically using C#

我的网络应用程序中有一个这样的菜单

<div>
  <ul>
    <li><a href="http://localhost:52451/Voronezh/Settings.aspx">Settings</a</li>
    <li><a href="http://localhost:52451/LoginPages/Welcome.aspx">Log out</a</li>
  </ul>
</div>

如果某些特殊条件成立,我想动态设置这些href链接。

我尝试了以下方法:

HTML代码

<li><a runat="server" id="toSettings" onserverclick="toSettings_ServerClick">Settings</a></li>

C#代码

protected void toSettings_ServerClick(object sender, EventArgs e)
    {
       if (condition)
         toSettings.HRef = "http://localhost:52451/Voronezh/Settings.aspx"; 
       else
         {...}      
    }

但它不起作用:我停留在同一页面上,而不是移至“设置”页面。

哪里有错? 应该改变什么?

提前致谢。

更改HRef在这里没有多大作用-它更改了链接,对页面没有任何直接影响。 试试Response.Redirect ,我想这就是您要寻找的。 即:

// inside the if statement
Response.Redirect("Settings.aspx"); // note - this is the local path

假设这是ASP.NET C#

从HttpResponse重定向的方法应该是您想要的。

参考:

https://msdn.microsoft.com/zh-CN/library/a8wa7sdt(v=vs.110).aspx

如果要在后面的代码中动态构建菜单,则可能应在ASPX中使用<asp:Literal ID="menu" runat="server"/>标记,并将其填充到Page_Load事件中,例如

if (!Page.IsPostBack) {
    menu.Text = GenerateMenu();
}

private string GenerateMenu() {
    if (yourcondition) {
        return "<div><ul><li><a href="...."></a></li></ul></div>"; 
    } else {

    }
}

进行回发,执行逻辑然后进行重定向的另一种方法是将链接标记更改为超链接控件,在页面加载时执行逻辑,并动态设置属性。

HTML:

<asp:HyperLink id="toSettings" Text="Settings" runat="server"/> 

背后的代码

protected void Page_Load(object sender, EventArgs e) {
  toSettings.NavigateUrl = "http://localhost:52451/Voronezh/Settings.aspx";
}

这样,您甚至可以根据需要更改文本(使用toSettings.Text = "Text to display"; )或可见性(使用toSettings.Visible = false; )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM