2012-07-04 43 views
1

我一直在使用Telerik控件,我使用的是服务器绑定,但我必须使用Ajax绑定,这是不正常工作,我得到错误“错误!请求的URL没有返回JSON asp.net的MVC” 以下是代码在我的控制器错误!请求的URL没有返回JSON asp.net mvc

[GridAction] 
    [Authorize(Roles = "Admin")] 
    public ActionResult Edit(int id) 
    { 
     Contact model = _cService.getContact(id, applicationID); 
     GetContactType(); 
     if (model != null) 
      return View(model); 
     else 
     return View(); 
    } 


    // 
    // POST: /Contact/Edit/5 
    [GridAction] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(int id, Contact model) 
    { 
     try 
     { 
      _cService.SaveContact(model, applicationID); 
      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(model); 
     } 
    } 

在我看来,下面的代码

@(Html.Telerik().Grid(Model) 
    .Name("Contact") 
      // .ToolBar(commands => commands.Insert()) 
    .DataKeys(keys => keys.Add(c => c.Id)) 

    .DataBinding(dataBinding => 
    { 

     dataBinding.Ajax() 

     .Update("Edit", "Contact", new { mode = GridEditMode.InForm, type = GridButtonType.Text }) 
     .Delete("Delete", "Contact", new { mode = GridEditMode.InLine, type = GridButtonType.Text }); 
    }) 

我能做到这一点的错误,出现此错误使用警告框,我已经尝试修改telerik.grid.min.js我已经删除了显示一个警告框的行,然后它不显示我的错误,但也不起作用。 有人可以给我一些建议。 谢谢

回答

0

这不是一个快速响应,但是现在我正在处理这个问题,我可以回答它。这可能是由于您的会话超时,导致IIS重定向到您的登录页面。由于它是正在返回的登录页面,而不是预期的JSON,因此您会收到此消息。您可以捕获此错误,如下所示:

var checkForSessionTimeout = function (e) { 
    logOnResponse = e.XMLHttpRequest.responseText.match(/.*<title.*>(Log On)<\/title>.*/); 
    if (logOnResponse.length > 0 || e.XMLHttpRequest.status === 401) { 
     alert("Your session has expired. You will be redirected to log on."); 
     location.href = logOnUrl; 
    } 
} 

当然,你必须定义logOnUrl指向你的页面。

如果有问题,如果您自己找到答案,想知道如何防止实际的错误警报,因为我们提供自己的?

相关问题