2017-01-05 18 views
0

*_NeedDataSourceメソッドでグリッドのデータソースにデータを入力する必要がある.ascx(ユーザーコントロール)内にTelerik RadGridがあります。Response.Redirectが以前に呼び出された場合、Grid_NeedDataSource呼び出しを避ける

同じユーザーコントロールがいくつかのユーザー認証を行っています。単にHttpContext.Current.User.Identity.IsAuthenticatedをチェックして、偽の場合はResponse.Redirect(url, false)とします。私は例外を見ている

が原因ユーザーがログインしていないとき*_NeedDataSourceメソッドが呼び出されることに私たちのライブシステム上で提起されている、これは私が(Response.RedirectからendResponseパラメータの値としてfalseを渡すので、可能であると思われます以降のすべてのページイベントを実行できます)。私は私ができる方法をうまくしようとしてきた

  1. Using endResponse in a Response.Redirect
  2. 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の実行を妨げるメソッドをオーバーライドすることができません。

誰もこの状況で動作し、あまりにも多くの認知オーバーヘッドを必要としないアプローチを推奨できますか?

+0

これは、[XYの問題]のように思える(http://meta.stackexchange.com/questions/66377/what-is -y-xy-問題) *** NeedDataSource ***イベントをトリガしたくないという基本的なビジネスロジックは何ですか?最も簡単な方法は*** RadGrid.Visible = false ***を作成するか、*** NeedDataSource ***の中にロジックを置くことができます。 – Win

+0

質問に記載されているように、ユーザがログインしていないときに例外が発生するため、NeedDataSourceを実行したくありません。 –

+0

私が言ったように、ビジネスロジックをチェックすることができます*** NeedDataSource ***、および***返信、***ユーザーが認証されていない場合。必要に応じて問題を処理できる方法はたくさんありますが、EndResopnseはNeedDataSourceとは関係ありません。 – Win

答えて

1

*_NeedDataSourceを呼び出してアクセスするコードでは、現在のResponseのステータスコードを確認してください。ステータスコードが302の場合、Response.Redirect()は、以前のリクエストの処理で呼び出されている:

if (Response.StatusCode != 302) 
{ 
    // do something here 
} 
+0

私はその解決法を実装することができましたが、条件付きで '* _NeedDataSource'の実行を防ぐためにどのメソッドをオーバーライドする必要があるのか​​わかりません。私はそれを動作させることができれば、私はこの質問に対するAlexander Manekovskiyの答えを実装するだろう:http://stackoverflow.com/questions/25473110/asp-net-redirect-and-end-page –

+0

私は参照してください..私は 'Telerik'コントロールには慣れていないので、' RadGrid'コントロールの 'Enabled'プロパティをリダイレクトする前にfalseに設定してみてください。それはイベントの処理を停止させるかもしれません。一方、それはあなたがすでに言及しているフラグの設定とあまり違いはありません... – user1429080

関連する問題