ASP.NET 3.5に2つのページがあり、最初のページから2番目のページのWebコントロール値にアクセス/読み取る必要があります。2ページ目は1つのリンクで表示されており、投稿イベントなどはありません。
ViewStateを使用する必要があると思いますが、このタスクでは非常に複雑に見えるので、これを実現するためのより良い方法を教えてください。
PS私はC#とVisualStudio2010を使用しています
私が正しく理解していれば、2つの.aspxページがあり、一方のページでもう一方のページと情報を共有したいと考えています。最初のページは2番目のページにリンクしていますか?
あなたが取ることができるいくつかのアプローチがあるので、私は尋ねます。送信しようとしている情報を使用して、2番目のページへのリンクのクエリ文字列にパラメータを追加できます。セッションを使用して、情報を一時的に保存することもできます。
例えば:
<asp:HyperLink NavigateUrl="www.<yoursite>.com/firstpage.aspx?eggs=1&bacon=yum" Text="Awesome Site" runat="server" />
2番目のページでは、Page_Loadのコードビハインドにこれがあります。
string eggs = Request.QueryString["eggs"];
string bacon = Request.QueryString["bacon"];
これで、1ページ目の値が2ページ目に表示されます。
別のアプローチは、次のようにセッションを使用することです。
1ページ目:
Session["bacon"] = "Yum";
2ページ目:
string bacon = (string)Session["bacon"];
ただし、ページ間で情報を渡すためにセッションを使いすぎないようにすることをお勧めします。
Quick& "Dirty":渡す情報を保持するセッション変数。
最初のページ:
Session["ValueToPassToOtherControl"] = "The value";
2ページ目:
var value = Session["ValueToPassToOtherControl"];
エレガント:何らかの方法で状態を管理する必要があります(その情報を保存および取得する機能を持つ静的マネージャーを介して)。これは変数にもなります。問題は、HTTPがステートレスであるということです。したがって、データの何らかの保存と取得を介して、この制限を回避する必要があります。
ViewStateの使用を提案しましたが、忘れてください。ViewStateは、ASP.NET Webページで使用される手法であり、シナリオで発生していることではない、ポストバック間でWebフォームの状態の変更を永続化します。
QueryStringジャグラリーとSession値を使用するより良い方法があります。
クロスページ投稿中に設定された前のページのプロパティを使用することができます。
aspリンクボタンを使用します。
<asp:LinkButton runat="server" id="myLink"
NavigateUrl="~/Page2.aspx"
target="_blank" Text="Go to page 2"></asp:LinkButton>
次に、Page2.aspx.csで:
次のように、 Page.PreviousPageから値を取得します。
TextBox txtUser = (TextBox)Page.PreviousPage.FindControl("txtUser");
TextBox txtSomeValue = (TextBox)Page.PreviousPage.FindControl("txtSomeValue");
2ページ目で必要に応じてこれらを使用してください。