创建/使用属性以获取会话变量C#

时间:2018-05-03 19:12:35

标签: c# asp.net webforms

我有一个ASPX Web窗体控件,可以从另一个项目中导入Person类。

public partial class cuTest : System.Web.UI.UserControl

我在该控件中创建了一个对象会话的属性和一个填充该会话的方法。

    public Person person
    {
        get
        {
            if (this.Session["Person"] == null)
            {
                Session["Person"] = new Person();
            }
            return Session["Person"] as Person;
        }
    }

    private void crearPago()
    {
        this.person.name = "Max";
        this.person.surname = "Ford";
    }

现在,当我想从包含该控件的页面调用它时。 var x = cuTest.person;我需要检查它是否为空,因为它不能为空。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我有一个静态类Web,我在那里添加了任何在整个应用程序中都很有用的属性。

有一点不同的是,RequestResponseSession对象无法直接使用。所以,我有3个辅助函数可以返回当前的RequestResponseSession个对象(如果有的话)。

因此,Person person属性就是这样:

using System;
using System.Web;
using System.Web.SessionState;

namespace MyWebApp
{
    public static class Web
    {
        private static HttpRequest request
        {
            get
            {
                if (HttpContext.Current == null) return null;

                return HttpContext.Current.Request;
            }
        }

        private static HttpResponse response
        {
            get
            {
                if (HttpContext.Current == null) return null;

                return HttpContext.Current.Response;
            }
        }

        private static HttpSessionState session
        {
            get
            {
                if (HttpContext.Current == null) return null;

                return HttpContext.Current.Session;
            }
        }

        public static Person person
        {
            get
            {
                // Here you can change what is returned when session is not available
                if (session == null) return null;

                if(session["Person"] == null) {
                     session["Person"] = new Person();
                }

                return session["Person"] as Person;
            }
            set
            {
                // Here you can change how to handle the case when session is not available
                if (session == null) return;

                session["Person"] = value;
            }
        }
    }
}

要使用它,请在PageUserControl代码中编写

// get
var x = MyWebApp.Web.person;
// set
MyWebApp.Web.person = x;

答案 1 :(得分:-1)

您可以使用以下命令检查名称/姓氏是空还是空:

string.IsNullOrEmpty(x.name);