2010-03-26 62 views
0

我有一個需要角色的操作的Jquery對話框的小問題。 在我的示例中,用戶可以單擊刪除按鈕並確認操作。 在我的控制器中,刪除操作需要一個角色,如果用戶處於所需角色,則刪除該對象。授權和jQuery對話框問題

的問題:如何以提醒用戶如果 *的元素已被刪除(重定向到索引視圖) *有錯誤(與信息提示) *他沒有刪除權限(警報,消息)

使用授權過濾器之前,刪除操作返回的JSON與布爾值,表示如果有錯誤,將URL對成功和對錯誤提醒郵件重定向。

正如我不能返回從我的濾光器的JSON,我創建在authorize濾波器返回與所述確認內容的部分視圖的其他方法。如果用戶沒有權限,則篩選器會返回包含未經授權的異常內容的局部視圖。

問題:如何區分返回的部分視圖。當我創建對話框時,我需要知道按鈕功能。

謝謝!

回答

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; 
     } 
    } 
0

我會建議添加一些東西到你的模型的jQuery對話框正在建立像CanDeleteItem標誌。然後使用該信息構建對話框,而不是假定他們有權刪除。顯示用戶不能使用的按鈕是一個壞主意。

其它故障的情況下,假設你使用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) 
    } 
}); 
+0

的問題是一個錯誤401後重定向我的AJAX功能永遠不會得到一個錯誤,但我登錄視圖的內容。 – Benjamin 2010-03-30 08:16:14

+0

你的控制器是否有HandleError屬性?嘗試刪除該屬性,然後查看該錯誤的ajax函數是否被調用。 – Jab 2010-03-30 13:24:16