【问题标题】:not able to redirect users to another page with hyper link无法使用超链接将用户重定向到另一个页面
【发布时间】:2015-01-25 15:54:12
【问题描述】:

我有要求通过使用下面的超链接控件将用户重定向到 youtube.com

我想使用下面的代码根据下拉列表中选择的项目动态更改 URL。

protected void ddlPType_SelectedIndexChanged(object sender, EventArgs e)
{
    int x = ddlPType.SelectedIndex;

    if (x == 0)
    {
        activateCerts.NavigateUrl = "http://www.youtube.com/watch?v=3AYoipyqOkQ";
        activateCerts.Text = "activateCerts";
        activateCerts.Target = "_blank";
        //activateCerts.HRef = "http://www.youtube.com/watch?v=3AYoipyqOkQ";

    }
    else if (x == 1)
    {
        //activateCerts.Target = "_blank";
        //activateCerts.HRef = "http://www.youtube.com/watch?v=hk3hxUuwg0w";
        activateCerts.Text = "activateCerts";
        activateCerts.NavigateUrl = "http://www.youtube.com/watch?v=3AYoipyqOkQ";

    }

这是一个aspx代码

<asp:Label runat="server" style="padding-left:23rem;" Text="pls watch this video on How to"></asp:Label>
                <asp:HyperLink ID="activateCerts"  runat="server"></asp:HyperLink>

但是当我点击链接时,我无法打开 youtube 视频

【问题讨论】:

  • 检查 AutoPostBack=true 是否有 dropdpwn ddlPType
  • 检查的自动回发是真的,我通过把这个检查放在 pageLoad 上解决了这个问题
  • 如果对您有帮助,您可以接受以下答案。

标签: c# asp.net .net hyperlink


【解决方案1】:

通过将AutoPostBack=true 设置为 dropdpwn ddlPType,这对我有用:

<form id="form1" runat="server">
<div>
    <asp:DropDownList runat="server" ID="ddlPType" AutoPostBack="true" OnSelectedIndexChanged="ddlPType_SelectedIndexChanged">
        <asp:ListItem Text="Option 1"  Selected="True" />
        <asp:ListItem Text="Option 2" />
    </asp:DropDownList>
<br />
    <asp:Label ID="Label1" runat="server" style="padding-left:23rem;" Text="pls watch this video on How to"></asp:Label>
            <asp:HyperLink ID="activateCerts"  runat="server"></asp:HyperLink>
</div>
</form>

.cs 页面:

   protected void ddlPType_SelectedIndexChanged(object sender, EventArgs e)
    {
        int x = ddlPType.SelectedIndex;

        if (x == 0)
        {
            activateCerts.NavigateUrl = "http://www.youtube.com/watch?v=3AYoipyqOkQ";
            activateCerts.Text = "activateCerts";
            activateCerts.Target = "_blank";
            //activateCerts.HRef = "http://www.youtube.com/watch?v=3AYoipyqOkQ";

        }
        else if (x == 1)
        {
            //activateCerts.Target = "_blank";
            //activateCerts.HRef = "http://www.youtube.com/watch?v=hk3hxUuwg0w";
            activateCerts.Text = "activateCerts";
            activateCerts.NavigateUrl = "http://www.youtube.com/watch?v=3AYoipyqOkQ";

        }
    }

【讨论】:

    【解决方案2】:

    对于名为 ddlPType 的下拉列表,您需要确保其 AutoPostBack 为 true。可以在属性面板中设置,也可以使用代码:

    <asp:DropDownList runat="server" ID="ddlPType" AutoPostBack="true" OnSelectedIndexChanged="ddlPType_SelectedIndexChanged">
    

    通过这一步你应该实现你的目标,但有时这并不是那么简单。您可能需要确保将数据绑定(如果有)放入

    if (!Page.IsPostBack)
    在 Page_Load 中。

    另外,Dropdownlist 只会在数据发生变化时发送数据。也就是说,如果你得到两个共享相同值的选项,Dropdownlist 可能不会响应你。例如:

    if(!IsPostBack) 
    { 
        for(int i=0;i<10;i++)this.DropDownList1.Items.Add(new ListItem(i.ToString(),"same_value")); 
    }
    

    最奇怪的情况出现了:你已经完成了以上所有操作,但仍然无法正常工作。有时它发生在 IE8 中。如果您使用 window.showModalDialog() 来显示 DropDownList,提交将带您进入一个新页面。需要在head标签之间添加:

    <base target=_self></base>
    

    希望我的经验会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多