对于需要角色的操作,我的Jquery对话框有点问题。 在我的示例中,用户可以单击删除按钮,并且必须确认操作。 在我的控制器中,删除操作需要一个角色,如果用户处于所需角色,则删除该对象。
问题:如何提醒用户 *元素已删除(重定向到索引视图) *出现错误(提醒消息) *他无权删除(提醒消息)
在使用授权过滤器之前,删除操作返回了一个带有布尔值的JSON,该布尔值表示是否存在错误,成功时重定向的URL以及出错时发出警告的消息。
由于我无法从过滤器返回JSON,因此我使用授权过滤器创建了另一个方法,该过滤器返回带有确认内容的局部视图。如果用户没有权限,则过滤器将返回带有未经授权的异常内容的部分视图。
问题:如何区分返回的部分视图。当我创建对话框时,我需要知道按钮功能。
谢谢!
答案 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;
}
}