0

目标

使用 Razor 引擎将 a 编码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>

而返回的existingItemsnull。为什么?

观察

我敢肯定——我的 Session 是有价值的。

4

1 回答 1

4

您不需要强制转换为基础类型。你可以简单地写:

<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"]是 null 所以不要指望它Json.Encode会返回其他东西。

于 2013-06-26T13:20:51.897 回答