これを行うためのよりクリーンな方法があることを願っています。ソース ページのマークアップには、いくつかの簡単な入力と送信ボタンがあります。
<asp:TextBox runat="server" ID="TBPostDateFrom" placeholder="From" />
<asp:TextBox runat="server" ID="TBPostDateTo" placeholder="Present" />
...
<asp:Button ID="BtnDetailedResults" PostBackUrl="~/Auth/ResultsDetail.aspx" runat="server" Text="View Detailed Results" />
ターゲット ページで、これらのコントロールを参照し、データソース選択パラメーターとして使用しようとしています。これまでのところ、私が見つけた唯一の方法は、長い ASP 生成名「ctl00$MainContent$TBPostDateFrom」と「ctl00$MainContent$TBPostDateTo」を使用することです。
SDSDetailedResults.SelectParameters.Add("PDFrom", Request.Form["ctl00$MainContent$TBPostDateFrom"]);
SDSDetailedResults.SelectParameters.Add("PDTo", Request.Form["ctl00$MainContent$TBPostDateTo"]);
long ct100$ を使用せずにこれらのコントロールを参照する方法はありますか? または、コントロールを直接参照する方法はありますか? 将来、マスター ページやコンテンツ コントロールを変更すると、これらの参照が台無しになると思います。
次のような入力に ClientIDMode=Static を追加して追加しようとしました。
<asp:TextBox runat="server" ID="TBPostDateFrom" placeholder="From" ClientIDMode="Static" />
しかし、それはIDを変更するだけのようです。ターゲット ページでは、ct100$ を使用せずに参照することはまだできません....
Page.PreviousPage メソッドも使用してみましたが、オブジェクトは空になります。
if (Page.PreviousPage != null)
{
//post date
TextBox PostDateFrom = (TextBox)Page.PreviousPage.FindControl("TBPostDateFrom");
TextBox PostDateTo = (TextBox)Page.PreviousPage.FindControl("TBPostDateTo");
//at this point both PostDateFrom and PostDateTo are empty, if I do this:
SDSDetailedResults.SelectParameters.Add("PostDateFrom", PostDateFrom.Text);
SDSDetailedResults.SelectParameters.Add("PostDateTo", PostDateTo.Text);
// I get an IIS error saying the object references dont' exist, or are null
}
}
事前に感謝します。ヘルプやガイダンスをいただければ幸いです。