私の理解が正しければ、クエリ文字列の一部としてIDを受け入れることができるようになりたいと考えています。例えば
http://your.domain.com/inputKeyword.aspx?ID=555
Request.QueryString[param]
したがって、ページ読み込みイベントでは、次の例に示すように、リクエスト オブジェクトのクエリ パラメータを確認できます。
protected void Page_Load(object sender, EventArgs e)
{
string id = Request.QueryString["ID"];
if (!string.IsEmptyOrNull(id))
{
//do something with the requested identifier
}
}
注: を使用Page.IsPostBack()
して、ページが初めてヒットしたのか、ボタン クリックの結果としてポスト バックされたのかを判断できます。
検索ボタンを正しく動作させるには、いくつかのオプションがあります。例えば; JavaScript を使用してボタンの onclick イベントをキャプチャし、id テキストボックスからの識別子を含むように修正された URL でページをそれ自体にリダイレクトできます。
しかし、おそらく次のコードが最も簡単で、コードをすべてサーバー側に保持します。
private _identifer string;
protected void Page_Load(object sender, EventArgs e)
{
string id = Request.QueryString["ID"];
if (!string.IsEmptyOrNull(id))
{
_identifer = id;
}
}
protected void SearchButton_Click(object sender, EventArgs e)
{
_identifer = IdentiferTextbox.Text;
}
protected void Page_PreRender(object sender, EventArgs e)
{
if (!string.IsEmptyOrNull(_identifer))
{
PopulateListForidentifer(_identifer);
}
}
基本的に、この例は、シナリオに対処できることを示しています。ASP.Net のページ ライフ サイクルは、イベントが Page_Load -> コントロール イベント (ボタン クリックなど) -> Page PreRender の順序で処理されることを意味します。
- URL に識別子を指定せずにページに初めてアクセスした場合、_identifer が設定されていないため、PopulateListForidentifer メソッドは呼び出されません。
- ただし、URL に識別子が含まれている場合は、ページの読み込みイベントで _identifer が設定され、ページの事前レンダリングが呼び出されると、PopulateListForidentifer が呼び出されます。
- 最後に、検索ボタンが押されたためにページが自分自身にポスト バックしている場合は、クリック ハンドラーが呼び出され、_identifer が IdentiferTextbox のコンテンツに設定されます。ページ prerender が呼び出され、PopulateListForidentifer も呼び出されます。これは、識別子が URL の一部として渡されたときのポイントを上書きすることに注意してください。