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

标签 c# jquery asp.net-mvc jquery-ui

我正在使用 jQueryUI 的 autocomplete允许搜索用户。文档指出我可以使用以下格式的数组作为数据源:[ { label: "Choice1", value: "value1"}, ... ]

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

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; }
}

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

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

$("#UserName").autocomplete({
    source:userNameList 
});

原来 userNameList 是这样显示的:

[ { "Label": "Choice1", "Value": "value1" }, ... ]

代替:

[ { label: "Choice1", value: "value1" }, ... ]

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

编辑:根据评论的输入,我已经验证这两种格式在功能上确实是等价的。我做了更多测试,结果发现 labelvalue 区分大小写。将我的成员更改为小写似乎可以解决问题,但我不认为该解决方案是最好的。关于如何将 :(这叫什么?)左侧的字符串更改为小写的任何建议?

最佳答案

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

关于c# - 将 C# 对象列表转换为 JavaScript 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966367/

相关文章:

c# - 弹出窗口为 View 中的每个窗口显示相同的结果

c# - 使用 xpath 获取定义类型的节点父节点

jquery - 提高 jquery 选择器的效率

jquery - 如何在 iframe 之外打开对话框

javascript - 动态绑定(bind)点击到 Google map 标记链接

asp.net-mvc - MVC - 它只是一个 3 层模型吗?

mysql - MVC 在 Razor DropdownlistFor 中设置默认值,该值绑定(bind)到数据库

javascript - 在 IE 浏览器中运行我的 MVC Web 应用程序时遇到数据表错误

c# - Polly "retry"在第一次失败重试尝试时抛出 TaskCanceledException

c# - 如何在请求后捕获 REST API 发送的响应 token ?