You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC客户端遍历Session中List集合问题求助

解决ASP.NET MVC中在_Layout.cshtml遍历Session中List的问题

问题原因

你在_Layout.cshtml中调用的是ISession原生的Get(string key)方法,这个方法返回的是字节数组(byte[]),而非你序列化的List<UserSiteList>集合。遍历字节数组时,自然会输出每个字节对应的ASCII编码值,而非预期的站点名称。

同时,即使正确获取到集合,直接输出@item会调用UserSiteList的默认ToString()方法,结果是类的完全限定名,也不是你要的站点信息。

修正步骤

1. 确保引用扩展类命名空间

在_Layout.cshtml顶部添加扩展类所在的命名空间,否则无法找到自定义的泛型Get<T>方法:

@using Customer_Application.DataLayer
@inject IHttpContextAccessor contxt;

2. 正确获取Session中的集合

使用你自定义的泛型Get<T>方法,指定类型为List<UserSiteList>:

@{ 
    var userSites = contxt.HttpContext.Session.Get<List<UserSiteList>>("userSites") ?? new List<UserSiteList>();
}

添加?? new List<UserSiteList>()是为了避免Session中无数据时出现空引用异常。

3. 正确遍历并展示站点信息

遍历集合时,访问Site属性来显示站点名称:

<ul class="dropdown-menu">
    @foreach (var item in userSites)
    {
        <li><a class="dropdown-item" href="#">@item.Site</a></li>
    }
</ul>

这里把普通<li>@item</li>改成带链接的下拉项,更符合导航栏的交互逻辑,你可以根据需求调整href的目标地址。

完整修正后的_Layout.cshtml片段

@using Customer_Application.DataLayer
@inject IHttpContextAccessor contxt;

@{ 
    var userSites = contxt.HttpContext.Session.Get<List<UserSiteList>>("userSites") ?? new List<UserSiteList>();
}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 头部内容保持不变 -->
</head>
<body>
<ul class="navbar-nav flex-grow-1 pt-1">
    <li class="nav_item dropdown">
        <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
            Sites
        </a>
        <ul class="dropdown-menu">
             @foreach (var item in userSites)
             {
                 <li><a class="dropdown-item" href="#">@item.Site</a></li>
             }
        </ul>
    </li>
</ul>
<!-- 其他页面内容 -->
</body>
</html>

额外注意事项

确保你已经在项目的依赖注入容器中注册了IHttpContextAccessor,在Program.cs(.NET 6+)或Startup.cs(.NET Framework/.NET 5及以下)中添加:

// Program.cs
builder.Services.AddHttpContextAccessor();

// 或 Startup.cs 的 ConfigureServices 方法中
services.AddHttpContextAccessor();

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:20:38