如何在 JavaScript 中输入 Razor ASP.NET MVC 中不带引号

How to enter Razor within Javascript without quotes in ASP.NET MVC

本文关键字:MVC NET Razor JavaScript 输入 ASP      更新时间:2023-09-26

我正在序列化我的模型:

<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() %>

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

如果你使用这个JSON插件,你可以在客户端上完成所有操作,只是一些事情。 如果你向上推送一个JSON字符串,在javascript中你可以这样做:

<script type="text/javascript">
    var Model = JSON.parse("@Model.JsonString");
</script>

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

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

它会把它变成:

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

这是有效的JavaScript。