目标
使用Razor引擎将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
。为什么?
观察
我确信——我的会话有一个值。
您不需要强制转换为底层类型。你可以简单地写:
<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>
你能看到警报吗?我相信你能看到。假设你关于变空的说法是真的,我甚至准备在上面下注5美元。
结论:Session["ProdructsSummary"]
为null,所以不要期望Json.Encode
会返回其他内容。