javascript - Razor 里面的 javascript 键值声明?

标签 javascript c# razor key-value

鉴于需要将数据从 View 数据提取到 javascript 键/值对象中:

var stuff = {
    something : [@someVar.Prop2, @someVar.Prop3, etc]
};

我想让 key 的“名称”为 someVar.Prop1 以便:

var stuff = {
    @someVar.Prop1 : [@someVar.Prop2, @someVar.Prop3, etc]
};

然而,当我在上面的第二个代码块中使用表单时,我在冒号处得到了一个 Expected identifier, string or number 错误:

@someVar.Prop1 : [@someVar.Prop2, etc]
---------------X (x marks the spot)

我需要如何格式化 Razor 代码,以便它知道我想说什么?

最佳答案

您绝对不应该尝试在 Razor View 中逐个构建 JSON。这很容易出错。

要扩展@DLeh 的回答,您可以做的是构建一个包含您想要的值的字典,在您的 Razor View 中将其序列化为 JSON,并将其分配给您的变量 as shown here :

@{
    // Assume that someVar is provided from somewhere else; 
    // this is just for demonstration
    var someVar = new { Prop1 = "My Prop", Prop2 = "Prop Value", Prop3 = 7 };
}

@{
    var obj = new Dictionary<string, object>
    {
        {someVar.Prop1, new object[] { someVar.Prop2, someVar.Prop3 } }
    };
}
<script>
    var stuff = @Html.Raw(Json.Encode(obj));
</script>

渲染输出:

<script>
    var stuff = {"My Prop":["Prop Value",7]};
</script>

关于javascript - Razor 里面的 javascript 键值声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179650/

相关文章:

asp.net-mvc - 表单 enctype ="multipart/form-data"不工作

javascript - Emberjs - 实时更改不起作用?

javascript - 将 desktopCapturer 保存到 Electron 中的视频文件

c# - 打印excel文档时设置打印机托盘

asp.net - 发布后布局 cshtml 未呈现

c# - MVC 4 - Kendo 网格数据绑定(bind)

javascript - 如何指定 Owl carousel 2 中显示的元素数量?

javascript - `Proxy` 将 `this[toString]` 与 `this[Symbol.toStringTag]` 混淆

c# - MVC4 : How to show Group of checkboxes with header checkbox?

c# - SharePoint 将日期保存到日期字段