我存储在列表项变量Session
中,但是在中使用它时_layout
,它告诉我以下错误:
foreach 函数无法处理 UserOptionIndex 类型的变量,因为 UserOptionIndex 不包含 GetEnumerator 的公共实例定义
这是我定义的模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace PruebaMenu.Models
{
public class OpcionUsuarioIndex
{
public String menu { get; set; }
public String acceso_op { get; set; }
public String opcion { get; set; }
}
}
在视图 _layout
中:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
<script type="text/javascript">
@{string codigo_user = Session["ss_UserCodigo"].ToString().Trim().ToUpper();
PruebaMenu.Models.OpcionUsuarioIndex objClass = (PruebaMenu.Models.OpcionUsuarioIndex)Session["class"];
}
@foreach (var item in objClass)
{
}
</script>
我在Controller中填写列表的方式是这样的:
public ActionResult login_acceso()
{
string opcion_rol = Session["ss_Rol"].ToString();
List<OpcionUsuarioIndex> opcion_permisoUsuario = new List<OpcionUsuarioIndex>();
DataTable dt_opcionpermiso = new DataTable();
String sql_permiso = "SELECT opcion,acceso" + opcion_rol + " FROM permisos";
conexion.conectar();
MySqlDataAdapter datos2 = new MySqlDataAdapter(sql_permiso, conexion.con);
datos2.Fill(dt_opcionpermiso);
List<String> accesos_list = new List<string>();
for (int p = 0; p < dt_opcionpermiso.Rows.Count; p++)
{
opcion_permisoUsuario.Add(new OpcionUsuarioIndex
{
opcion = dt_opcionpermiso.Rows[p][0].ToString(),
acceso_op = dt_opcionpermiso.Rows[p][1].ToString()
});
}
conexion.cerrar();
Session["class"] = opcion_permisoUsuario;
return View();
}
在里面foreach
,objClass
它给了我错误:
我想知道如何解决这个问题,我的目标是能够遍历存储session
在_Layout
. 提前致谢。
如果您的变量
Session["class"]
包含 type 列表List<OpcionUsuarioIndex>
,则必须以相同的方式在 View 中检索它:代码如下: