0

私はWebアプリケーションプロジェクトを使用しています。

WebルートにUsersという名前のフォルダーがあり、そのフォルダーにUserList.aspxというページがあります。

私ができるようにしたいのは、Response.Redirect(Users.UserList.URL)と入力することです

私がおそらくできると思うのは、Pageを拡張するクラスを作成し、MethodInfo.GetCurrentMethod()。ReflectedType(これはテストされていないと思います)を呼び出すURLという静的プロパティを追加してから、Users.UserList->を変換することです。 〜/ Users / UserList.aspx

私が知っているこのメソッドの問題は、すべてのページを調べて基本クラスを拡張する必要があることであり、「-」文字を含むページでは機能しません。

利点は、ページを移動してもリンク切れが発生しないことです(名前空間が間違っているページがある場合、Resharperはそれを提供します)。

また、クエリ文字列paramsを受け取るすべての個々のページに静的メソッドを設定できるため、paramsを追加/削除する場合は、それらのparamsなどを使用するものを確認できます。また、そのページを呼び出す場合は、チェックする必要はありません。パラメータの名前(例:UserId userId、Id、id)。したがって、Users.ViewUser.GetUrl(1)->〜/ Users / ViewUser.aspx?UserId=1のようになります。

だから問題は:これを行うためのより良い方法はありますか?それとも、これは原則として悪い考えですか?

4

3 に答える 3

0

考えていることを実行する基本Pageクラスの拡張メソッドを作成するだけで済みます。そうすれば、戻ってすべてのページの基本クラスを変更する必要がなくなります。

于 2010-01-04T18:20:36.870 に答える
0

より良い方法があります。パスについて知っている交通警官を作成します。次に、パスが変更された場合、データモデルが変更されたり、その他のものが1か所だけ変更されたりします。さらに、構成ファイルから読み取り、実行時に変更を加えることもできます。

したがって、呼び出しは次のようになります。

Repose.Redirect(TrafficCop["Users.UserList"].URL)

構文が気に入らない場合は、他の方法で。

于 2010-01-04T18:21:00.440 に答える
0

MethodInfo.GetCurrentMethod()。ReflectedTypeが機能しないため、ジェネリックを使用してこれを行う別の方法を考え出しました。

Users.ViewUser.GetUrl()またはUsers.ViewUser.URLの代わりにGetUrl()パラメーターを含むページの場合はUsers.ViewUser.GetUrl(1)のままですが、どちらも同じ方法である必要があるため、理想的ではありません。と呼ばれますが、私が推測する文字列よりも優れています。

念のため、しばらく質問を開いたままにしておきます。

edidt:同じタイプのパラメーターが2つあるとうまく機能しないため、実際にはGetUrl(String getQuery)という別のメソッドを作成するだけだと思います。

さらに編集:自分がやりたいことを正確に行う方法を見つけました。BasePage:Pageというクラスを作成しました。ここで、静的メソッドであるT:Pageは、各ページがベースページから次のようにredirectおよびgeturlを継承します。MyPage:BasePage任意のページは、コマンドMyPage.Redirect();を使用してそのページにリダイレクトできます。

于 2010-01-05T17:35:06.133 に答える