c# - 使用 AJAX 从列表返回属性

标签 c# jquery ajax asp.net-mvc asp.net-core

我目前正在使用 .NET Core 的 AJAX。我正在尝试做非常基本的事情。填充项目列表,然后显示 <li> 中的每个项目.问题是我发送的列表是来 self 的数据库的类型。因此,如果您滚动到我的 javascript 代码,在执行每个 <li> 之后项目是“未定义的”。我很确定会发生这种情况,因为我正在发送整个对象。

所以我需要在我的 $.each 中有另一个循环来选择 PersonId、PersonName、PersonAddress 并将它们显示在行中。

作为 javascript 和 Ajax 的新手,我真的在这里苦苦挣扎,找不到任何关于 asp.net core 的好教程。

非常感谢任何建议

我的模型是:

public class Person
{
    public int PersonId { get; set; }
    public string PersonName { get; set; }
    public string PersonAddress { get; set; }
}

我的索引方法:

public JsonResult OnGetList()
{
    List<Models.Person> list = new List<Models.Person>();

    foreach (var item in _context.Person.ToList())
    {
        list.Add(item);
    }

    return new JsonResult(list);
}

数据库中的数据如下所示:

PersonId PersonName PersonAddress
1        Martin     New York
2        Sam        New Jersey
3        Eli        Ohio

我的看法:

<div id="dvItems" style="font-size:24px;">
</div>

嵌入在 View 底部的 Javascript:

<script>
    $.ajax({
        type: "GET",
        url: "/Person?handler=List",
        contentType: "application/json",
        dataType: "json",
        success: function (response) {
            var dvItems= $("#dvItems");
            dvItems.empty();
            $.each(response, function (i, item) {
                var $tr = $('<li>').append(item.PersonId + "with name " + item.PersonName + "living in" + item.PersonAddress).appendTo(dvItems);
            });
        },
        failure: function (response) {
            alert(response);
        }
    });
</script>

最佳答案

这并没有回答原始问题,但值得一提:

你应该(必须?,出于安全原因)在服务器端创建一个 DTO (c#),它包含你想在客户端显示的内容 (javascript >, html).

你可以创建类似这样的东西:

public class PersonDto
{
    public string Name {get; }
    public string Address { get;}

    public PersonDto(string name, string address)
    {
       Name = name;
       Address = address;
    }
}

然后像这样更改您的代码:

public JsonResult OnGetList()
{
    var list = new List<PersonDto>();

    foreach (var item in _context.Person.ToList())
    {
        list.Add(new PersonDto(item.PersonName, item.PersonAddress));
    }

    return new JsonResult(list);
}

关于c# - 使用 AJAX 从列表返回属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55077273/

相关文章:

c# - XML LINQ 转换

c# - 如何检索在 linq 中使用所有提供的标签标记的项目?

jquery - 如何使用 jquery 匹配标签后的文本?

javascript - 带有链接的图像褪色错误

jquery - 如何使用 jQuery 可排序接收和更新异步等待?

c# - 如何避免调用 CUDA Dll 的访问冲突异常?

c# - 如何使用 Process.Start() 关闭-重新启动-休眠-待机-注销计算机?

javascript - 如何使用ajax交换两个表格单元格值并更新到数据库中

javascript - 如何从快速渲染的 ejs 网页调用 node.js 函数

c# - MVC5 通过 Jquery Ajax 返回通用对象列表