【问题标题】:Reading a value from a propery in Session object to cshtml从 Session 对象中的属性读取值到 cshtml
【发布时间】:2017-07-12 15:52:25
【问题描述】:

我正在尝试使用下面的会话对象中的属性在我的网页上显示欢迎文本

<h3>@HttpContext.Current.Session["Application"]</h3> 这给了我对象本身,但我想知道如何从Application 对象中读取属性

我可以知道一个好的方法吗?

【问题讨论】:

  • 您必须将会话变量转换为 Application 对象,然后您才能访问 Application 对象上的所有属性。
  • 我也试过这个@{(ApplicationFilterDto)HttpContext.Current.Session["Application"]} 但我仍然无法访问属性
  • 用括号括起来:((ApplicationFilterDto)HttpContext.Current.Session["Applica‌​tion"]).someproperty

标签: c# session razor


【解决方案1】:

当我阅读这个问题并思考这个故事时,我认为您需要使用的只是TempData,只要您需要它,请使用keep and peek on it,如果您需要在用户使用您的网站时,请继续进行会话。

如果您需要在应用程序级别拥有一些数据,您可以创建一个静态类并使用该类来保存您的数据,直到应用程序关闭或重新启动。

【讨论】:

    【解决方案2】:

    您可以使用 Json.NET/Newtonsoft 反序列化对象。您需要在项目中引用此库。可以直接从website或者Nuget下载

    这是对象属性的示例

        public class ApplicationModel
        {
            public string Name { get; set; }
            public string WelcomeMessage { get; set; }
        }
    

    在你的cshtml中

        @{
        var appSessionData = @HttpContext.Current.Session["Application"]
        var applicationData = JsonConvert.DeserializeObject<ApplicationModel>(appSessionData);
        <h3>@applicationData.WelcomeMessage</h3>
        }
    

    问候, 维巴夫·拉姆查兰

    【讨论】:

    • 您的假设是他在将对象存储到会话中之前将其序列化为 json。 OP没有提到这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2020-04-08
    • 2019-12-06
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2018-03-07
    相关资源
    最近更新 更多