向 Web 应用程序方法添加查询字符串参数失败后
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 参数中指定的记录。我在里面放了一个标签来检查是否将正确的参数 's' 传递给了 ClientScript.RegisterStartupScript() 并且是!!!
如果页面加载了查询字符串参数 (eg.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 方法中的所有操作放在单独的括号内后,它就可以工作了。我以为他们已经被分配到一个没有-post-back 的情况;但他们不是。需要括号。所以它必须是:
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 = "";
}
}
}
我有以下代码,它使用函数 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 参数中指定的记录。我在里面放了一个标签来检查是否将正确的参数 's' 传递给了 ClientScript.RegisterStartupScript() 并且是!!!
如果页面加载了查询字符串参数 (eg.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 方法中的所有操作放在单独的括号内后,它就可以工作了。我以为他们已经被分配到一个没有-post-back 的情况;但他们不是。需要括号。所以它必须是:
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 = "";
}
}
}