2009-06-30 31 views
0

私が取り組んでいるASP.NETアプリケーションがあります。このアプリケーションの要件の1つは、クエリ文字列パラメータを使用しないことです。その理由は、クライアントがそれが汚いとプロフェッショナルではないと感じるということです。また、セッション変数も使用できません。これらの課題を克服するため、私はrunat = "server"で隠されたhtml要素を使うことに決めました。ASP.NET - パラメータの非表示フィールド

問題は、ページが自分自身にリダイレクトされることです。その理由は、ページが10ページのリストのテンプレートを表しているからです。ユーザーが「次へ」をクリックすると、アプリケーションは2ページ目の情報を更新する必要があります。ユーザーが「前」をクリックすると、その逆が発生する必要があります。

次のページリクエストで必要な値にアクセスできるように、非表示のHTMLフィールドを読み取り/設定するにはどうすればよいですか?

ありがとうございました!

答えて

4

これはViewStateのプロパティです。それはあなたのために往復でオブジェクトを持続させます。

+1

これは、JavaScriptから値にアクセスする必要がない限り、最良の解決策です。 – tekBlues

0

私がここで読んだ小さな情報から、私はウィザードコントロールがあなたにとって正しいかもしれないと推測していますか?

それ以外にはCross Page Postbackがあります。これは、クエリ文字列やセッションなしで動作します。

2

隠し入力のvalueプロパティには、テキスト入力と同様にアクセスできます。

hiddenFieldPage.Value = "2"; // page 2! 
if (hiddenFieldPage.Value == "2") 
    // show page 2! 

System.Web.UI.HtmlControlsを含める必要があります。代わりに、WebControls名前空間内の隠された入力のラッパーであったasp:hiddenコントロールを思い出しているようです。

1

ASP.NETは、LosFormatter classを使用してビューステートをシリアル化します。本質的に、あなたも同様のことをしています。必要なデータをオブジェクトに格納し、隠しフォームフィールドとしてシリアル化してください。値を取得して逆シリアル化するには、Request.Form["..."]を使用します。

+0

を持っている場合、私は同じアプローチを使用します。これはクライアント側の能力を持つRIAに最適です –

2

ビューステートを使用して、あなたの状況に最適なオプションです:

// Storing a student in view state. 
Student stud = new Student("John", "Doe"); 
ViewState["CurrentStudent"] = stud; 

// Retrieve a student from view state 
Student stud = (Student) ViewState["CurrentStudent"]; 

あなたが注意を払う必要があるすべては、あなたのクラスはビューステートに格納するには、シリアライズでなければならないということです。

This is a nice tutorial to help you through.

0

あなたが

<asp:HiddenField ID="ObjectID" runat="server" /> 

<asp:ControlParameter ControlID="ObjectID" Name="Parameter's name" PropertyName="Value" Type="Int32" /> 
+0

Nope。 ControlParameter '###'にコントロール '####'が見つかりませんでした。 – Fandango68

関連する問題