[英]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.