C#属性不起作用

时间:2017-12-20 19:40:58

标签: asp.net properties

不明白为什么它不工作..我使用该属性将Activelogin设置为true然后获取另一页中的值以证明用户有权访问。

    namespace Ibrax_1
{
    public partial class loginPage : System.Web.UI.Page
    {
        public bool activelogin;          

        public bool Activelogin
        {
            get
            {
                return activelogin;
            }
            set
            {
                activelogin = value;
            }
        }
.
.
.
  Activelogin = true; // here in a method im setting the value to true.

我在这里获得价值:

namespace Ibrax_1
{
    public partial class Program : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            CheckAvailablePrograms();
        }

        private void CheckAvailablePrograms()
        {
            loginPage lp = new loginPage();      

            if (lp.Activelogin) //here im getting the value but its false
            {
我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在创建新实例:

loginPage lp = new loginPage();

新实例将每个属性设置为其默认值。对于布尔值,即false

如果您在其他地方将其设置为true,那么由于您没有查看该实例,因此无所谓。

它就像在一张纸上画画,然后拿另一张纸,想知道为什么没有画画。除非您正在查看同一张纸,否则您无法预期会有图纸。

因此,您需要在某处保存对象实例,以便在CheckAvailablePrograms方法中再次使用它。正如Alex Kudryashev所提到的,你可以将它保存为Session变量,尽管它不是唯一的方法。如果您愿意,可以在此处详细了解Session对象:https://msdn.microsoft.com/en-us/library/ms178581.aspx