无法将用户重定向到具有超链接的其他页面

时间:2014-11-27 06:05:53

标签: c# asp.net .net hyperlink

我要求用户通过下面的

使用超链接控件重定向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视频

2 个答案:

答案 0 :(得分:1)

通过设置AutoPostBack=true下拉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";

        }
    }

答案 1 :(得分:0)

对于名为ddlPType的Dropdownlist,您需要确保其AutoPostBack为true。您可以在“属性”面板中设置它,也可以使用以下代码进行设置:

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

通过这一步你应该实现你的目标,但有时这并不是那么简单。您可能需要确保在Page_Load中的

if (!Page.IsPostBack)
中放置数据绑定(如果有)。

此外,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>

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