为什么控制器动作不响应发送json数据

时间:2015-02-26 20:14:46

标签: ajax json asp.net-mvc helpermethods

我学习ASP.NET MVC并遇到一些问题。

我在视图中通过ajax helper方法创建两个链接。它们发送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>

这是ajaxoption,在ajax助手中使用

    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));
        }

    }

当我使用第二个链接时,一切正常,但是当我使用第一个链接时,我的内部服务器错误代码为500,响应类型为text / html。 我使用此链接返回偏见视图,它们之前都有效。

我尝试使用自己的ajax请求,但结果仍然相同。我无法理解错误。我认为这个问题是抽象的,但也许你有同样的问题或者知道它为什么会发生。

EDIT1

当我从地址栏中的链接写入地址时,出现此错误: System.InvalidOperationException:此流不支持超时。

我尝试在ajax请求中设置大超时,但它没有帮助。当我发送较少的数据作为响应时,Reqest成功执行。 我认为这与响应中的数据发送大小有关。我错了吗?这个错误的原因是什么?

我会很高兴你的建议。谢谢大家!

0 个答案:

没有答案