繁体   English   中英

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

[英]calling a javascript method from within a dropdown list 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更改中运行。事件

谢谢你的所有建议:)

编辑:

根据您的评论,我认为这是您想要的解决方案。 您可以为每个下拉列表值创建一个案例,然后根据这些案例,在新标签中将用户重定向到其他url。

    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;
    }
}

您可以改用“隐藏字段”,在后面的代码中,用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>

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

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

我没有尝试过,但是我认为这应该起作用。

希望这会有所帮助

暂无
暂无

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

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