微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们可以访问存储在 Razor View .Net core 3.1 会话中的复杂对象吗

如何解决我们可以访问存储在 Razor View .Net core 3.1 会话中的复杂对象吗

是否有可能在 .net core 3.1 中访问 .cshtml 中的复杂对象?我浏览了大多数网站都无法获得任何有关相同的信息。在服务器端,我发现我们可以做如下

public static class SessionExtensions
{
    public static T GetComplexData<T>(this ISession session,string key)
    {
        var data = session.GetString(key);
        if (data == null)
        {
            return default(T);
        }
        return JsonConvert.DeserializeObject<T>(data);
    }

    public static void SetComplexData(this ISession session,string key,object value)
    {
        session.SetString(key,JsonConvert.SerializeObject(value));
    }
}

HttpContext.Session.SetComplexData("abcd",listofObject);

我们如何访问这个 listofObject,它是 razor 视图中的会话列表?

问候, 基兰

解决方法

您可以在返回视图之前在服务器端代码中访问上述方法。这样你就可以创建一个 ViewModel 来存储你的复杂对象,并返回这个 ViewModel。现在您可以在 razor 视图中访问您的复杂对象。

例如:

public IActionResult Index()
{
    var myComplexObject = HttpContext.Session.GetComplexData<ComplexObjectType>("abcd");

    var vM = new SomeViewModel
    {
        ComplexObject = myComplexObject
    };

    return View(vM);
}

然后在视图中,

@model ProjectName.ViewModels.SomeViewModel

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

// Access it like so:
Model.ComplexObject 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。