从下拉列表asp.net中调用javascript方法

时间:2013-04-03 15:56:59

标签: c# javascript asp.net

我有一个下拉列表,当所选值是certin值时,我需要做一些事情,然后重定向到新标签页中的新页面

现在我认为最好的方法就是使用response.wirte()这样

Response.Write(<script>);
Response.Write(window.open('url'));
Response.Write(</script>);

或Page.ClientScript.RegisterStartupScript()方法调用一个javascript方法,它会在不同的标签中打开一个新的页面,如此

Page.ClientScript.RegisterStartupScript(GetType(),"GoToURL", "<script language=JavaScript>GoToURL(" + url + ")</script>");

和javascript看起来像

<script type="text/javascript">
                function GoToURL(url)
                {
                    window.open(url);
                }
            </script>

我已经尝试了这两个和response.write方法只是提出无法解析resposnse请求,当我使用Page.ClientScript.RegisterStartupScript

时什么也没发生

任何人都可以看到我在这个或其他任何可能的方式出错的地方

请注意,这两个代码的和平在我的下拉列表的SelectedIndexChanged方法中被删除了

提前致谢

更新 最后我只是陷入其中并且使用了一个按钮来执行后面的代码和java脚本(喜欢那些onclientclick事件:p)因为似乎没有什么工作可以让java脚本从下拉菜单的onselected更改事件中运行

感谢您提出的所有建议:)

3 个答案:

答案 0 :(得分:0)

编辑:

根据您的评论,我认为这是您正在寻找的解决方案。您可以为每个下拉列表值创建一个案例,并根据这些情况,将用户重定向到新标签中的不同网址。

    protected void ddlAuthoritytype_SelectedIndexChanged(object sender, EventArgs e)
{
    var port = Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port.ToString();

    string ddl = ddlAuthoritytype.SelectedValue;
    switch (ddl)
    {
        case "AL":
            var script = string.Format("window.open('{0}://{1}{2}{3}')", Request.Url.Scheme, Request.Url.Host, port, ResolveUrl("~/alabama-state-tax-calculator.aspx"));
            ScriptManager.RegisterStartupScript(this, this.GetType(), "newWindow",script, true);
            break;
    }
}

答案 1 :(得分:0)

您可以使用隐藏字段,在后面的代码中,使用URL设置隐藏字段值。

pageLoad() javascript函数中检查隐藏字段的值,如果它不为空,请使用window.open(hiddenFieldValue)之类的内容:

<script type="text/javascript">
    function pageLoad()
    {
        // Use $('#' + '<%= hfURL.ClientID %>') if hidden field has runtat="server"
        if($('#' + '<%= hfURL.ClientID %>').val()) 
            window.open($('#' + '<%= hfURL.ClientID %>').val()); 
            // OR window.open($("hfURL").val(), '_blank');
    }
</script>

答案 2 :(得分:0)

问题是,在页面回发并返回到html的两种情况下,他们都没有找到你的JavaScript函数,即:GoToUrl(),因为它最初没有加载。 您可以在C#按钮单击事件中调用window.open(url);方法。像这样:

Page.ClientScript.RegisterStartupScript(GetType(),"GoToURL", "<script language=JavaScript>window.open(" + url + ");</script>");

我没试过,但我认为这应该有用。

希望这会有所帮助