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

问题描述 投票:0回答: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 () {

            });
    })

我不知道为什么会发生这种情况。 编辑: 当我用类替换未知对象时它得到修复

c# asp.net-mvc farsi
1个回答
0
投票
您遇到的 500 内部服务器错误可能是由于 ASP.NET MVC 的 JSON 序列化程序难以序列化从操作方法返回的匿名类型 new { ... } 。通过用命名类 (VisitViewModel) 替换匿名类型,您可以为 JSON 序列化程序提供清晰度和结构,从而解决问题。 并且始终更喜欢对需要序列化并发送到 ASP.NET MVC 应用程序中的客户端的数据使用命名类 (ViewModel),以避免此类序列化问题。

© www.soinside.com 2019 - 2024. All rights reserved.