[英]after adding querystring parameter to web application method fails
我有以下代码,使用功能ClientScript.RegisterStartupScript在与代码后面不同的框架中打开超链接。 从数据库中优先检索了该超链接,并将其分配给标签。
public void OpenWindow()
{
Formview_CurrentSelectedProcess.DataBind();
string url = (Formview_CurrentSelectedProcess.FindControl("LabelLink") as Label).Text;
string s = "window.open('" + url + "', 'main');";
Test.Text = s;
ClientScript.RegisterStartupScript(this.GetType(), "script", s, true);
}
这完美。 然后,我在该页面上实现了一个Querystring。 正确传递了请求参数,并以预期的方式在Pageload上打开了超链接。 但是:下次调用此方法时,将打开的超链接是属于Querystring参数中指定的记录的超链接。 我在其中放置了一个标签,以检查是否将正确的参数s传递给ClientScript.RegisterStartupScript(),并且它是正确的!
如果该页面已加载了Querystring参数(例如,aspx?ID = 324),则该函数会发生错误,而无需该参数的情况下加载同一页面的效果很好。
怎么了? 尽管输入参数已更改,为什么ClientScript.RegisterStartupScript返回旧结果?
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
PopulateRootLevel();
string GetID = Request.QueryString["ID"];
if (String.IsNullOrEmpty(GetID))
{
}
else
{
InputNodeToOpen.Text = GetID;
ButtonClick_transmit(button1, EventArgs.Empty);
InputNodeToOpen.Text ="";
IDNodesToBeOpened.Text = "";
}
}
有什么暗示吗? 马丁
好。 发现错误:
将所有动作放在page_load方法中的单独括号内后,它可以工作。 我以为他们已经被分配到无回邮的情况了。 但是他们不是。 需要括号。 因此它必须是:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PopulateRootLevel();
string GetStructure = Request.QueryString["Structure"];
if (String.IsNullOrEmpty(GetStructure))
{
}
else
{
InputNodeToOpen.Text = GetStructure;
ButtonClick_transmit(button1, EventArgs.Empty);
InputNodeToOpen.Text = "";
IDNodesToBeOpened.Text = "";
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.