Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iPostBack定制_C#_Asp.net_Webforms_Postback - Fatal编程技术网

C# iPostBack定制

C# iPostBack定制,c#,asp.net,webforms,postback,C#,Asp.net,Webforms,Postback,我正在尝试创建我的“自定义iPostBack”,我所做的只是创建一个bool属性 bool test; public bool MyPostBack { get{ test = Page.IsPostBack; return test; } set{ test = value; } } 调试时,将值设置为false,测试为true,按F11后,测试保持原样!我觉得这很奇怪。你知道为什么吗?谢谢。每次读取属性时,getter都会将字段重置为原始页面。IsPostBack。在属性g

我正在尝试创建我的“自定义iPostBack”,我所做的只是创建一个bool属性

bool test;
public bool MyPostBack
{
    get{ test = Page.IsPostBack; return test; }
    set{ test = value; }
}

调试时,将值设置为false,测试为true,按F11后,测试保持原样!我觉得这很奇怪。你知道为什么吗?谢谢。

每次读取属性时,getter都会将字段重置为原始页面。IsPostBack。

在属性getter中要做的第一件事是重置它:

test = Page.IsPostBack;
因此,设置MyPostBack属性基本上没有效果,因为每次获取属性值时,都会覆盖将其设置为的值

你可能想要更像这样的东西:

bool test;

public bool MyPostBack
{
    get{ return test; }
    set{ test = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
     MyPostBack = Page.IsPostBack;
}

私有变量测试在页面加载事件中初始化为页面的IsPostBack属性的值。

我想建议另一种方法。 您很可能希望在会话中保留此信息,因此可以执行以下操作:

public bool MyPostBack
{
   get
   {
        if (Session["MyPostBack"] == null)
            Session["MyPostBack"] = Page.IsPostBack;

        return (bool)Session["MyPostBack"];
   }
   set
   {
        Session["MyPostBack"] = value;
   }
}
这样,MyPostBack将始终返回有效值,即使您没有初始化它。例如,它甚至在Page_Init中加载Page_之前就可用


我还认为最好不要有一个二传手,而是在getter中进行更多的计算。否则,根据我的经验,当在一个或两个以上的情况下设置其值时,代码可能会变得不可读,并且不太容易维护。

您需要调用MyPostBack以更改测试。您的意思是我需要做:set{MyPostBack=value;}您到底想做什么?我正在尝试创建我的个人iPostBack,在这里,我可以获得真实的IsPostBack值,但也可以“设置”它。您可能需要返回测试| | Page.IsPostBack。然而,这听起来是个坏主意。您想完成什么?问题是在调试过程中,当逐步遍历代码时,var test没有正确设置!我会试试的,非常感谢!变量初始值设定项将在页面生命周期的早期设置该值。执行变量初始值设定项时未正确设置Page.IsPostBack。您需要在Page_Load事件中设置测试变量。我已经更新了我的答案来反映这一点。好了,现在我明白了,谢谢大家,由于我的代码中的错误,当我在调试过程中也得到了它并试图更改它的值时,它也被重置了!这解决了我的问题,现在我已经完成了我的第一个电子商务网站:谢谢大家!