【问题标题】:ASP.Net Sessions in VB.NetVB.Net 中的 ASP.Net 会话
【发布时间】:2012-09-25 07:15:59
【问题描述】:

我在我的 ASP.Net 上创建了一个公共属性,它包含一个实体的会话。其目的是当用户在表单上填写多个步骤时添加实体,然后将整个批次保存到数据库中。但是,当我使用会话时,我收到错误“对象引用未设置为对象的实例”。

这是我的代码:

Public ReadOnly BreadQuestionnaire as Bread 
                          Implements IQuestionnaire.BreadQuestionnaire
       Get
           If Me.Session("BreadQuestionnaire") Is Nothing Then
              Me.Session("BreadQuestionnaire") = New Bread()
           End If
       Return TryCast(Me.Session("BreadQuestionnaire"),Bread)
      End Get
End Property

它基于我在 C# 中使用的代码,以前从未给我带来任何麻烦,但我已经将 VB.Net 强加给了我。

那么,谁能帮帮我?

【问题讨论】:

  • 在页面的哪个方法中调用了BreadQuestionnaire
  • 它在我的 mvc web 应用程序的控制器类中通过视图的接口
  • 这里有一个关于这个问题的链接 - stackoverflow.com/questions/759795/…
  • 我没有使用 Microsoft MVC 模板。所以我没有使用 Action。它比 MVC 更 MVP。我从来没有遇到过 C# 的这个问题,但在 VB.Net 中这似乎是一个正确的旧痛
  • 问题似乎是当调用公共属性时没有创建会话。保持在 ASP.Net 页面中,我调用了公共属性,它什么都没有!

标签: asp.net-mvc vb.net session


【解决方案1】:

system.web.httpcontext.current.session.add("BreadQuestionnaire", Bread)

我不确定 me.session 是否有效 - 该属性是属于页面类还是属于它自己的?无论哪种方式,使用 httpcontext.current 都应该始终可用。

而且您要检索两次会话,您可以一次完成:

Public ReadOnly BreadQuestionnaire as Bread 
                          Implements IQuestionnaire.BreadQuestionnaire
       Get
           Dim _sessionBread = system.web.httpcontext.current.session("BreadQuestionnaire")
           If_sessionBread Is Nothing Then
             Dim _bread As New Bread
             system.web.httpcontext.current.session.add("BreadQuestionnaire", _bread)
             Return _bread
           Else
           Return _sessionBread
           End If
      End Get
End Property

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2011-07-22
    • 2015-11-13
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多