0

StringBuilder を使用してデータを別のフォームに投稿する、セッションのない Web サイトを作成しようとしています。問題は、データが他のフォームに投稿された後、ページが正しく読み込まれることですが、ページをリロードするか、Enter キーを押すと、非表示のフィールドの値が失われます。

例えば

ページ A は StringBuilder を使用してページ B に投稿しています。ページ B はフォーム データを取得して非表示フィールドに保存しますが、ページを更新するとすべてが失われます。

        StringBuilder sb = new StringBuilder();
        sb.Append("<html>");
        sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
        sb.AppendFormat("<form name='form' action='{0}' method='post'>", "page2.aspx");
        sb.AppendFormat("<input type='hidden' name='param1'  value='{0}'>", param1.Value);
        sb.AppendFormat("<input type='hidden' name='param2'  value='{0}'>", param2.Value);

        sb.Append("</form>");
        sb.Append("</body>");
        sb.Append("</html>");

        Response.Write(sb.ToString());

        Response.End();
4

1 に答える 1

0

それらの値を維持するために、非表示のフィールドにマークをrunat="server".付ける必要がありますrunat="server"

実際にコードを見てみると、ウェブフォームを回避しているので、明らかにそれらを使用していません。したがって、上記のように Web フォームを使用するか、適切なモデルを使用して MVC アプローチを使用します。これは、正しく行われた場合に状態を維持する効果があります。

別の方法として、ポストバック時に Request オブジェクトから値を取得することもできますが、少し古い学校です。

于 2012-07-05T07:19:38.997 に答える