でいくつかのページをbetweed。この場合、説明する記事へのリンクは大歓迎です。つの方法は、これはおそらく非常にラメ問題であり、私はASP.Netについての知識が不足しているASP.NET
私は分離コードとしてのC#でASP.NETのWebサイト上で働いています。私の現在のプロジェクトでは、非常に似通った機能を持つページはほとんど開発されておらず、多くの機能は同じです。たとえば、
2ページで同じですか。他のいくつかのものも同様です。私はこれを共通の基底クラスに入れたいと思います。
private string GetAttachmentTempPath()
{
return Request.PhysicalApplicationPath + WebConfigurationManager.AppSettings.Get("AttachmentsTempFolder");
}
私はAttachment
クラスにこれを移動したいと思いますが、アプリケーションの物理パスを取得するために、私はRequestオブジェクトを渡す必要があります。しかし、本当にのすべてのページに属していない他の機能がありますその方法には、それはオブジェクトとAttachment
クラスを結合するので、本当にいいです。
周りPage.Request
オブジェクトを渡すために必要とすることなく、どこか別の場所、これらの機能を移動する方法はあります?
p.s.アプリケーションは膨大で、アーキテクチャ全体を変更する余地はありません。
class BasePage : Page
{
...
protected override OnInit() {
// do check here
}
}
は今、あなたはのOnInitは毎回あなたMyOtherPageがロードされ実行されます。このclass MyOtherPage : BasePage { ... }
のようなページを実装できます。
あなたはまだAttachmentクラスに置くことができます。添付ファイルのクラスメソッドは次のようになります。private static string GetAttachmentTempPath(string appPhysicalPath) - プロジェクト内のどこからでも呼び出すことができます - string attachmentTempPath = GetAttachmentTempPath(Request.PhysicalApplicationPath);このように、添付ファイルを処理するコードはすべてattacmentクラスに存在しますが、必要に応じて実際のデータを渡します(クラスを初期化するときにもこれを行うことができます)。 – dash
オブジェクトを渡すことは実際にはHttpContext、IMHOに頼るよりも少数のカップリングです。 – sq33G
ウェブサイトプロジェクトを使用している場合はbtwマイクロソフトの公式アドバイスは:http://msdn.microsoft.com/en-us/library/t990ks23.aspx – dash