我有一个下拉列表,当所选值是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更改事件中运行
感谢您提出的所有建议:)
答案 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>");
我没试过,但我认为这应该有用。
希望这会有所帮助