0

ロールを必要とするアクションのJqueryダイアログに少し問題があります。私の例では、ユーザーは削除ボタンをクリックして、アクションを確認する必要があります。私のコントローラーでは、削除アクションには役割が必要です。ユーザーが必要な役割を持っている場合、オブジェクトは削除されます。

問題:要素が削除された場合にユーザーに警告する方法(インデックスビューにリダイレクト)*エラーが発生した(メッセージで警告)*ユーザーには削除する権限がありません(メッセージで警告)

承認フィルターを使用する前に、削除アクションは、エラーが発生したかどうかを示すブール値、成功時にリダイレクトするURL、およびエラー時に警告するメッセージを含むJSONを返しました。

フィルタからJSONを返すことができないため、確認コンテンツを含む部分ビューを返す承認フィルタを使用して別のメソッドを作成しました。ユーザーに権限がない場合、フィルターは許可されていない例外コンテンツを含む部分的なビューを返します。

問題:どの部分ビューが返されたかをどのように区別するか。ダイアログを作成するときは、ボタンの機能について知っておく必要があります。

ありがとう!

4

2 に答える 2

0

Global.asaxにコードを追加して解決策を見つけました。

protected void Application_EndRequest()
    {
        if (Context.Response.StatusCode == 302 &&
            Context.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
        {
            Context.Response.Clear();
            Context.Response.StatusCode = 401;
        }
    }
于 2010-03-31T08:01:11.003 に答える
0

CanDeleteItemフラグのようにjqueryダイアログが構築されているモデルに何かを追加することをお勧めします。次に、削除する権限があると仮定するのではなく、その情報を使用してダイアログを作成します。ユーザーが使用できないボタンを表示することは、悪い考えです。

その他のエラー状況では、jquery.ajax を使用して削除アクションに投稿すると仮定すると、コントローラーから例外がスローされたときに onerror イベントが発生するはずです。

$.ajax({
  url: "/delete/5",
  type: "POST",
  success: function(json){
   // the delete happened
  },
  error: function(request, status, error){
  // it failed, authorization(403) or just an error (500)
  }
});
于 2010-03-26T14:43:06.503 に答える