将列表编码为JSON

时间:2013-06-26 13:17:40

标签: c# asp.net-mvc-4 razor json

目标

使用Razor Engine将List<T>Session["MySession"]编码为JSON。

问题

我的Index.cshtml中有以下脚本:

<script type="text/javascript">
    var existingItems = 
        @Html.Raw
           (Json.Encode
              ((List<MyApp.Models.Data.getSpecificProductToShoppingList_Result>)
                  Session["ProdructsSummary"]))

    window.onload = function () {
        console.log(existingItems);
    }
</script>

existingItems的回复是null。为什么呢?

观察

我确定 - 我的会话有价值。

1 个答案:

答案 0 :(得分:3)

您无需转换为基础类型。你可以简单地写:

<script type="text/javascript">
    var existingItems = @Html.Raw(Json.Encode(Session["ProdructsSummary"]));

    window.onload = function () {
        console.log(existingItems);
    }
</script>

现在你说这会产生以下标记:

<script type="text/javascript">
    var existingItems = null;

    window.onload = function () {
        console.log(existingItems);
    }
</script>

这个怎么样:

<script type="text/javascript">
    @if (Session["ProdructsSummary"] == null) 
    {
        <text>alert('the session is null');</text>
    }
</script>

你能看到警报吗?我相信你能看到它。假设关于获取null的陈述是真的,我甚至准备打赌5美元。

结论:Session["ProdructsSummary"]为空,所以不要指望Json.Encode会返回其他内容。