将C#对象列表转换为JavaScript对象数组

Jef*_*eff 11 c# asp.net-mvc jquery jquery-ui

我正在使用jQueryUI的自动完成功能来搜索用户.文档说明我能够以下列格式使用数组作为数据源:[ { label: "Choice1", value: "value1" }, ... ]

我有一个基类,它提供了Users我的视图模型继承的唯一列表.视图模型具有以下功能:

public List<TestJson> GetUsers()
{
    return AvailableUsers
        .Select(u => new TestJson
            {
                Label = u.LastName + ", " + u.FirstName + "(" + u.UserId + ")",
                Value = u.UserId
            }).ToList();
}

public class TestJson
{
    public string Label { set; get; }
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我使用上面这样:

var userNameList = @Html.Raw(Json.Encode(Model.GetUsers()));

$("#UserName").autocomplete({
    source:userNameList 
});
Run Code Online (Sandbox Code Playgroud)

原来userNameList是这样出现的:

[ { "Label": "Choice1", "Value": "value1" }, ... ]
Run Code Online (Sandbox Code Playgroud)

代替:

[ { label: "Choice1", value: "value1" }, ... ]
Run Code Online (Sandbox Code Playgroud)

如何让我的数组以正确的格式显示?

编辑:根据评论的输入,我已经验证这两种格式确实在功能上等同.我做了一些测试,事实证明label并且value区分大小写.将我的成员改为小写似乎可以解决问题,但我觉得解决方案并不是最好的.关于如何将以下字符串左侧的字符串更改为小写的任何建议(这叫做什么?)

Ahm*_*ary 6

        //View.cshtml
<script type="text/javascript">
    var arrayOfArrays = JSON.parse('@Html.Raw(Json.Encode(Model.GetUsers()))');
</script>
Run Code Online (Sandbox Code Playgroud)


Jef*_*eff 2

Jason P 和 Rob G 的评论是正确的。问题中的两种格式是等效的。原来我的问题出在外壳上。卫生部!

我刚刚将类中的属性更改为小写。我想,我很想看到替代解决方案。我会选择这个,直到提交更好的为止。

  • 来这里是为了弄清楚如何将 C# 对象列表转换为 javascript 对象数组——你的问题就是我的解决方案。谢谢。 (2认同)