使用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
。为什么呢?
我确定 - 我的会话有价值。
答案 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
会返回其他内容。