1

我一直在使用 Telerik 控件,我正在使用服务器绑定,但我必须使用 Ajax 绑定,它无法正常工作,我收到错误“错误!请求的 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 我删除了显示警报框的行,然后它没有显示错误但也不起作用。有人可以给我一些建议。谢谢你

4

1 回答 1

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指向您的页面。

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

于 2013-01-18T19:22:34.617 回答