1

データベースにデータを挿入するWebフォームを作成しました。挿入ボタンがクリックされると、データを挿入するためのコードがトリガーされ、データが正常に挿入された後、「データが正常に挿入されました」という他のページにリダイレクトされます。こんな感じで…

ページを挿入.....

if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true)
     {
         String A = "InsertSuccess";

          Response.Redirect("OtherPage.aspx?&lnk=" + A);
     }

他のページ...

   String link = null;
            link = Request.QueryString["lnk"];
            if (link == "InsertSuccess")
            {
                txtLabel.Text = "Record inserted succesfully!";

            }

私の問題は、挿入ページを使用しなくても他のページにアクセスすると、同じ結果が得られることです。アドレスバーに..http:// localhost:8672 / OtherPage.aspx?&lnk = InsertSuccessと入力したとします。「レコードが正常に挿入されました!」ラベル。他のページに「レコードが正常に挿入されました!」と表示されないようにしたい。実際に何かを挿入したのではなく、ブラウザのアドレスバーからアクセスしたときのメッセージ。

4

6 に答える 6

2

セッション変数を使用して更新されたステータスを保存し、それが otherpage.aspx で利用可能かどうかを確認し、テキスト ボックスを更新してリセットすることができます。

ページを挿入

if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true)
     {
          Session["status"]="InsertSuccess";


          Response.Redirect("OtherPage.aspx");
     }
}

その他のページ

if (Session["status"]!=null)
        {
            txtLabel.Text = "Record inserted succesfully!";
            Session["status"]=null; 

        }
于 2012-10-24T07:25:26.910 に答える
1

アドレスバーに「http://localhost:8672/OtherPage.aspx&lnk=InsertSuccess」と入力するだけでメッセージを取得したくない場合は、フラグ付きの文字列を渡す代わりに、レコード ID を渡す必要がある場合は、他のページでレコード ID が実際にテーブルに存在することを確認する必要があります。

そのために、ID を GUID タイプとして使用していることを願っています。

次のようなものがあります。

"http://localhost:8672/OtherPage.aspx&lnk=BBB5259E-F5A3-4271-ABC8-D95A00BE9770"

そうしないと、int ID を覚えるのが簡単すぎます。

于 2012-10-24T07:32:12.457 に答える
0

URLを修正し、「?」の後の「&」を削除するとします。..「&」を削除する必要があります

ブラウザのキャッシュについて考えたことはありますか?時々キャッシュはこれを行うことができます、そして私はキャッシュ設定のためにあなたと同様の問題に苦労しました。

于 2012-10-24T08:13:24.573 に答える
0
if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true)
     {
       HttpContext.Current.Items["A"]= "Inserted Successfully";

          Server.Transfer("OtherPage.aspx);
     }



string ContextData =(string) HttpContext.Current.Items["A"];

if(!string.Empty(ContextData))
{  
Label1.Text = ContextData;
}
于 2012-10-24T08:07:11.817 に答える
0

クエリ文字列を変更する必要があります。

    Response.Redirect("OtherPage.aspx?&lnk=" + A);

次のようにする必要があります。

    Response.Redirect("OtherPage.aspx?lnk=" + A);

エンコードされていない場合の「&」記号は、パラメーター区切りとして扱われます。

    Response.Redirect("OtherPage.aspx?lnk=" + A + "&secondParam=someValue");

コメントによる要求:
このSO 投稿
MSDN HttpServerUtility.UrlEncode
.NET Slave - Working with query stringsを参照してください。

String.IsNullOrWhiteSpace ()が便利な場合もあります。

于 2012-10-24T07:32:42.003 に答える