代码之家  ›  专栏  ›  技术社区  ›  anathan

当我尝试在调试模式下运行时,我得到状态代码500,而代码中没有错误

  •  0
  • anathan  · 技术社区  · 1 年前

    当我尝试在中运行此代码时。NET框架,我得到了一个状态代码500,但我不知道为什么。。。

    这是后端:

    public ActionResult getvisit(int id)
    {
        var query = __db.Visits
                        .Where(v => v.fkDoctor == id && v.fkPatient == null)
                        .Select(v => new {v.Id, v.sDate})
                        .ToList();
    
        List<object> visits = new List<object>();
    
        foreach (var item in query)
        {
            var sdatetime = new PersianDateTime(item.sDate);
    // Replacing this new object with a class fixed the issue but i dont' know why?
            visits.Add(new {item.Id, sdatetime.Date, sdatetime.TimeOfDay});
        }
    
        var result = Json(visits, JsonRequestBehavior.AllowGet);
    
        return result;
    }
    

    前端:

    docSpan.on("change", function () {
            const id = docSpan.val();
            visitSpan.empty();
            visitSpan.append(
                "<option value=''>انتخاب کنید</option>"
            )
            $.post("/Home/getvisit", { id: id })
                .done(function (res) {
                    console.log(res);
                    for (let item of res) {
                        console.log(item);
                        visitSpan.append(
                            `<option value=${item.id}>${item.sdate} || ${item.stime}</option>`
                        );
                    }
                })
                .fail(function () {
    
                })
                .always(function () {
    
                });
        })
    

    我不知道为什么会发生这种事。 编辑 当我用类替换未知对象时,它被修复了

    1 回复  |  直到 1 年前
        1
  •  0
  •   sachind    1 年前

    500您遇到的内部服务器错误可能是由于ASP。NET MVC的JSON序列化程序在序列化从您的操作方法返回的匿名类型new{…}时遇到困难。通过用命名类(VisitViewModel)替换匿名类型,可以为JSON序列化程序提供清晰性和结构,从而解决问题。 对于需要在ASP中序列化并发送到客户端的数据,总是更喜欢使用命名类(ViewModels)。NET MVC应用程序,以避免此类序列化问题。