C#属性不起作用

问题描述 投票:0回答:1

不明白为什么它不工作..我使用属性将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
            {

我做错了什么?

asp.net properties
1个回答
2
投票

您正在创建一个新实例:

loginPage lp = new loginPage();

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

如果你在其他地方将它设置为true,那么因为你没有看那个实例就没关系了。

这就像在一张纸上画画,然后拿另一张纸,想知道为什么没有画画。除非你在看同一张纸,否则你不能指望有一幅画。

所以你需要在某处保存对象的实例,这样你就可以在CheckAvailablePrograms方法中再次使用它。正如Alex Kudryashev所提到的,你可以将它保存为Session变量,尽管它不是唯一的方法。如果您愿意,可以在这里阅读更多关于Session对象的信息:https://msdn.microsoft.com/en-us/library/ms178581.aspx

© www.soinside.com 2019 - 2024. All rights reserved.