0

関数 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 = "";

            }

    }

それに関するヒントはありますか?マーティン

4

1 に答える 1

0

わかった。間違いを見つけました:

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 = "";

        }
    }
}
于 2015-09-13T13:41:44.093 に答える