*_NeedDataSource
メソッドでグリッドのデータソースにデータを入力する必要がある.ascx(ユーザーコントロール)内にTelerik RadGridがあります。Response.Redirectが以前に呼び出された場合、Grid_NeedDataSource呼び出しを避ける
同じユーザーコントロールがいくつかのユーザー認証を行っています。単にHttpContext.Current.User.Identity.IsAuthenticated
をチェックして、偽の場合はResponse.Redirect(url, false)
とします。私は例外を見ている
が原因ユーザーがログインしていないとき*_NeedDataSource
メソッドが呼び出されることに私たちのライブシステム上で提起されている、これは私が(Response.Redirect
からendResponse
パラメータの値としてfalseを渡すので、可能であると思われます以降のすべてのページイベントを実行できます)。私は私ができる方法をうまくしようとしてきた
- Using endResponse in a Response.Redirect
- https://blogs.msdn.microsoft.com/tmarq/2009/06/25/correct-use-of-system-web-httpresponse-redirect/
:私は彼がコミュニティの指導に行っていたと仮定して、元の著者はそれをこのようにコード化されましたendResponse
の値をtrueに戻すことなく、確実に*_NeedDataSource
の実行を防止します。
フラグ設定とチェックを含むいくつかの方法が考えられますが、それは控えめで、後続の開発者は同じパターンを実装することを忘れる可能性があります。私はまた、この質問にAlexander Manekovskiyからの応答に似ているOnPreRender(または何でも)を上書きするためにベースコントロールタイプを実装しようとしました:ASP.NET Redirect and End Pageしかし、私は*_NeedDataSource
の実行を妨げるメソッドをオーバーライドすることができません。
誰もこの状況で動作し、あまりにも多くの認知オーバーヘッドを必要としないアプローチを推奨できますか?
これは、[XYの問題]のように思える(http://meta.stackexchange.com/questions/66377/what-is -y-xy-問題) *** NeedDataSource ***イベントをトリガしたくないという基本的なビジネスロジックは何ですか?最も簡単な方法は*** RadGrid.Visible = false ***を作成するか、*** NeedDataSource ***の中にロジックを置くことができます。 – Win
質問に記載されているように、ユーザがログインしていないときに例外が発生するため、NeedDataSourceを実行したくありません。 –
私が言ったように、ビジネスロジックをチェックすることができます*** NeedDataSource ***、および***返信、***ユーザーが認証されていない場合。必要に応じて問題を処理できる方法はたくさんありますが、EndResopnseはNeedDataSourceとは関係ありません。 – Win