1

Telerikコントロールを使用していて、サーバーバインディングを使用していましたが、Ajaxバインディングを使用する必要があります。これは正しく機能していません。エラー「エラー!要求されたURLがJSONasp.netmvcを返しませんでした」というエラーが発生します。以下はコードです。マイコントローラーで

[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 に答える