0

私は ASP.NET MVC を学んでいて、いくつかの問題があります。

ビューに ajax ヘルパー メソッドで 2 つのリンクを作成します。これらは、mailsType 引数と応答 json データを送信します。リンクと AjaxOptions オブジェクトのコードは次のとおりです。

    <div class="list-group" style = "text-align: center; margin-top: 10px;">
            @Ajax.ActionLink("Incoming", "GetMails", new { mailsType = State.Incoming }, opts,
                new{@class = "list-group-item active", data_type = "Incoming"})

            @Ajax.ActionLink("Outgoing", "GetMails", new {mailsType = State.Outgoing}, opts,
                new { @class = "list-group-item", data_type = "Outgoing" })
    </div>

ajax ヘルパーで使用する ajaxoption を次に示します。

    AjaxOptions opts = new AjaxOptions
{
    OnSuccess = "viewMail",
};

javascript関数でレスポンスを処理する

    function viewMail(data) {
var html =
    '<table class="table table-hover table-striped">' +
        '<thead>' +
        '<tr><th>' + (data.State == 'Incoming' ? 'From' : 'To') + '</th> <th>Subject</th> <th>Date</th></tr>' +
        '</thead>' +
        '<tbody>';

$(data.Mails).each(function(i, el) {
    html += '<tr><td>' + el.From + '</td> <td>' + el.Subject + '</td> <td>' + el.Date + '</td></tr>';
});

html += '</tbody></table>';

$('#contentDiv').html(html);
    }

そして、ここにコントローラーのアクションメソッドのコードがあります

    public ActionResult GetMails(State mailsType)
    {
        if (Request.IsAjaxRequest())
        {
            return Json(new
            {
                State = Enum.GetName(typeof (State), mailsType),
                Mails = _serviceManager.GetMessages(mailsType)
            }, "application/json", JsonRequestBehavior.AllowGet);
        }
        else
        {
            ViewBag.State = Enum.GetName(typeof(State), mailsType);

            return PartialView(_serviceManager.GetMessages(mailsType));
        }

    }

2 番目のリンクを使用するとすべて正常に動作しますが、最初のリンクを使用すると、コード 500 の内部サーバー エラーが発生し、応答タイプが text/html になります。このリンクを使用して部分ビューを返しますが、以前はすべて機能していました。

独自の ajax リクエストを使用しようとしましたが、結果は同じでした。何が悪いのか理解できません。質問が抽象的であることは理解していませんが、同じ問題が発生したか、その理由を知っている可能性があります。

編集1

アドレス バーのリンクからアドレスを書き込むと、次のエラーが発生します: System.InvalidOperationException: Timeouts are not supported on this stream.

ajax リクエストで大きなタイムアウトを設定しようとしましたが、役に立ちませんでした。応答で送信するデータが少なくなると、要求が正常に実行されます。応答で送信するデータのサイズに関連していると思います。私が間違っている?このエラーの原因は何ですか?

私はあなたのすべてのアドバイスを嬉しく思います。ありがとうございます!

4

0 に答える 0