$.getJSON 给出未定义的结果(Razor 网页和 JSONresult)

$.getJSON gives Undefined result (Razor web page and JSONresult)

我刚刚开始学习 Razor。我已经学习了 8 小时的付费视频教程,现在我正在尝试通过大量谷歌搜索和边读来开发一个真实世界的应用程序。

我已经阅读了许多类似的帖子并尝试了很多想法,但我只是在用头撞墙。 此问题源于尝试创建级联下拉列表(select 客户端,更新客户端联系人的下拉列表) 我已经删除了所有 EF 代码,并返回到手写联系人示例列表。 在此示例中,我什至没有尝试重建联系人下拉列表的 select 列表 - 如果警报消息显示结果而不是“未定义”

,我会很高兴

这是剃须刀页面底部的 JQuery 代码:

@section Scripts
{
    <script type="text/javascript">
        $(document).ready
            (
                function ()
                {
                    $('#TblTrials_ClientId').change
                        (
                            function ()
                            {
                                $.getJSON
                                    (
                                        "?handler=Contacts", function (result)
                                        {
                                            $.each(result, function (i, item)
                                            {
                                                alert(item.contactname);
                                            });
                                        }
                                    );
                            }
                        );
                      
                }
            );


    </script>

    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial");}

}

这里是相应的 cs 页面模型中的“OnGetContacts”处理程序

public JsonResult OnGetContacts()
{
    List<clientcontact> clientcontacts = new List<clientcontact>{
           new clientcontact{ClientContactId = 1, ContactName = "Scott"},
           new clientcontact{ClientContactId = 2, ContactName = "Bill"}
           };
    
    JsonResult jsn = new JsonResult(clientcontacts);
    return jsn;
}

我在“return jsn”之前设置了断点,jsn 是两个条目的集合,因此肯定会调用处理程序。 我担心 jsn 看起来更像 clientcontacts class 而不是 JSON 字符串,但这可能是我在这个阶段的无知。

这是我对 clientcontacts 的定义 class

namespace TrialManagementSystem.Models
{
    public partial class clientcontact
    {
        public int ClientContactId { get; set; }
        public string ContactName { get; set; }

    }
}

我尝试了一些想法,例如 item.ContactName 而不是 item.contactname 和 result[i].ContactName 和许多其他排列

如果有任何建议,我将非常非常感谢。

非常感谢 托尼

您只需更改您的代码:

 alert(item.contactname);

 alert(item.contactName);