授权和Jquery对话框问题

时间:2010-03-26 14:25:18

标签: asp.net-mvc jquery jquery-dialog unauthorized

对于需要角色的操作,我的Jquery对话框有点问题。 在我的示例中,用户可以单击删除按钮,并且必须确认操作。 在我的控制器中,删除操作需要一个角色,如果用户处于所需角色,则删除该对象。

问题:如何提醒用户 *元素已删除(重定向到索引视图) *出现错误(提醒消息) *他无权删除(提醒消息)

在使用授权过滤器之前,删除操作返回了一个带有布尔值的JSON,该布尔值表示是否存在错误,成功时重定向的URL以及出错时发出警告的消息。

由于我无法从过滤器返回JSON,因此我使用授权过滤器创建了另一个方法,该过滤器返回带有确认内容的局部视图。如果用户没有权限,则过滤器将返回带有未经授权的异常内容的部分视图。

问题:如何区分返回的部分视图。当我创建对话框时,我需要知道按钮功能。

谢谢!

2 个答案:

答案 0 :(得分: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)
  }
});

答案 1 :(得分: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;
        }
    }