0

我正在序列化我的模型:

<script type="text/javascript">

    var Model = '@Model.ToJson()';

</script>

ToJson 是一个扩展方法:

public static string ToJson(this object obj)
{
    var serializer = new JavaScriptSerializer();
    var val = serializer.Serialize(obj);
    return val;
}

现在我想通过执行以下操作在其他 javascript 文件中访问我的模型:

var hello = Model.id;

'@Model.ToJson()'问题是我使用引号时它没有正确序列化。

序列化的对象如下所示:

var Model = "{ "id": "2231f87c-a62c-4c2c-8f5d-b76d11942301" }";

但是为了让我通过 Model.id 访问 id 它应该是这样的:

var Model = { "id": "2231f87c-a62c-4c2c-8f5d-b76d11942301" };

如何输入不带引号的剃刀语法?使用 asp.net 语法我认为是:

var Model = <%=Model.ToJson() %>

我如何用剃须刀做同样的事情?谢谢!

4

2 回答 2

1

如果你使用这个 JSON 插件,你可以在客户端上做这一切,而且很简单。如果你推一个 JSON 字符串,在 javascript 中你可以这样做:

<script type="text/javascript">

    var Model = JSON.parse("@Model.JsonString");

</script>
于 2013-09-12T18:09:08.567 回答
1

由于 Razor 默认会转义引号,因此您需要使用Html.Raw

var Model = @Html.Raw(Model.ToJson());

它将变成:

var Model = {"id":"whatever"};

这是有效的javascript。

于 2013-09-12T21:02:04.323 回答