繁体   English   中英

如何在Asp .Net Core中设置序列化

[英]How to set serialization in Asp .Net Core

我在我的第一个Ajax调用上在我的Ajax回发{“ readyState”:0,“ status”:0,“ statusText”:“ error”}时收到以下错误,但第二个返回我想要的数据。 我的C#方法(UserSelect)JsonResults在放置断点时显示数据

我的C#代码:

   public IActionResult OnPostAreaSelect(string Id)
    {
        //Generating list for Areas
        Guid ModelId = new Guid(Id);
        List<ModelArea> modelAreas = _context.ModelArea.Distinct()
            .Where(w => w.ModelId == ModelId).OrderBy(o => o.AreaColumn.Name).Include(i => i.AreaColumn).ToList();

       return new JsonResult(modelAreas);
    }

    public IActionResult OnPostUserSelect(string Id)
    {
        //Generating list for Users   
        Guid ModelId = new Guid(Id);

        List<UserModel> userModels = _context.UserModel
            .Where(w => w.ModelId == ModelId).OrderBy(o => o.User.FullName)
            .Include(i => i.User)
            .ToList();


        return new JsonResult(userModels);
    }

我的JavaScript:

<script type="text/javascript">
$(document).ready(function () {

    $("#RepfocusModelDropdown").change(function () {
        var Id = $(this).val();
        if (Id != null) {
            $.ajax({                   
                async: true,
                type: "POST",
                url: "./Create?handler=UserSelect",
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("XSRF-TOKEN",
                        $('input:hidden[name="__RequestVerificationToken"]').val());
                },
                data: {
                    Id: Id
                },
                crossDomain: true,
                dataType: "json",
                success: function (response) {
                     alert(JSON.stringify(response));

                },
                error: function (response) {
                    alert(JSON.stringify(response));
                }

            });

            $.ajax({
                type: "POST",
                url: "./Create?handler=AreaSelect",
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("XSRF-TOKEN",
                        $('input:hidden[name="__RequestVerificationToken"]').val());
                },
                data: {
                    Id: Id
                },
                dataType: "json",
                success: function (response) {
                    alert(JSON.stringify(response));

                },
                error: function (response) {
                    alert(JSON.stringify(response));
                }

            });

        }


    })
})

我的脚本上的第二个ajax调用工作正常,只有第一个返回错误,我该如何解决该错误

当您使用EntityFramework (或其他ORM)时,序列化可能会出现问题,因为实体可能具有一些循环引用 为避免此问题,解决方案是设置序列化设置:

services.AddMvc().AddJsonOptions(opt => {
    opt.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});

要么:

Newtonsoft.Json.JsonConvert.DefaultSettings = () => new Newtonsoft.Json.JsonSerializerSettings {
    ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM