Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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# 回发后是否覆盖值?_C#_Asp.net - Fatal编程技术网

C# 回发后是否覆盖值?

C# 回发后是否覆盖值?,c#,asp.net,C#,Asp.net,我有一个reporting.aspx页面。如果页面加载时没有参数,则会显示项目列表,单击其中一个项目将加载带有projectId参数的同一页面,并显示该项目的实际报告 此报表有两个文本框:FromDateText和ToDateText。这两个框的文本应该是todays date,或者应该是URL的另外两个参数的值。我的问题是,在按钮调用Response.Redirect之前,它将用今天的日期重新初始化两个框的文本 一段代码: protected void Page_Load(object

我有一个reporting.aspx页面。如果页面加载时没有参数,则会显示项目列表,单击其中一个项目将加载带有projectId参数的同一页面,并显示该项目的实际报告

此报表有两个文本框:FromDateText和ToDateText。这两个框的文本应该是todays date,或者应该是URL的另外两个参数的值。我的问题是,在按钮调用Response.Redirect之前,它将用今天的日期重新初始化两个框的文本

一段代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
        if (!projectIdAvailable)
        {
            // Load list with buttons
            // Each button loads the page again with a ProjectId as parameter
            foreach (var project in ListOfAllProjects)
            {
                var button = new Button
                    {
                        Text = project.Name,
                        PostBackUrl = string.Format("Reporting.aspx?ProjectID={0}", project.Id)
                    };
                MyPanel.Controls.Add(button);
            }
        }
        else
        {
            // Can't use if (!IsPostBack) as it will always be a postback at this place.
            LoadReporting();
        }
    }

    private void LoadReporting()
    {
        // If we have date as parameter use it, else take today
        if (this.Request.QueryString["fromDate"] != null)
        {
            this.FromDateText.Text = this.Request.QueryString["fromDate"];
        }
        else
        {
            this.FromDateText.Text = DateTime.Now.ToShortDateString();
        }

        if (this.Request.QueryString["toDate"] != null)
        {
            this.ToDateText.Text = this.Request.QueryString["toDate"];
        }
        else
        {
            this.ToDateText.Text = DateTime.Now.ToShortDateString();
        }

        // Reporting generates a table here...
    }

    // Refresh the page with date parameters
    protected void RefreshButtonClick(object sender, EventArgs e)
    {
        int projectId = int.Parse(this.Request.QueryString["ProjectID"]);
        this.Response.Redirect(
            string.Format(
                "Reporting.aspx?ProjectID={0}&fromDate={1}&toDate={2}",
                projectId,
                this.FromDateText.Text,
                this.ToDateText.Text));
    }
我能想到的最好的解决方案是不在文本框中写当前日期,这样它就不会覆盖自己,或者我可以使用一些JavaScript,这样我就不会收到回帖

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
            LoadReporting();
    }
}

这两种方法都不是很好。做这件事的好方法是什么?

如果(!IsPostBack),您应该只加载
数据,而不是每次回发都加载数据

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
            LoadReporting();
    }
}

默认情况下,内容保存在
ViewState
中,因此无需每次都重新加载它。

如果(!IsPostBack
)只加载
,而不是每次回发都加载数据

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
            LoadReporting();
    }
}

默认情况下,内容保存在
ViewState
中,因此无需每次都重新加载它。

如果(!IsPostBack
)只加载
,而不是每次回发都加载数据

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
            LoadReporting();
    }
}

默认情况下,内容保存在
ViewState
中,因此无需每次都重新加载它。

如果(!IsPostBack
)只加载
,而不是每次回发都加载数据

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
            LoadReporting();
    }
}

默认情况下,内容保存在
ViewState
中,因此无需每次再次加载。

尝试在
内部加载!ispostback
。否则,每次回发时都会重置该值

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
        {
            LoadReporting();
        }
    }
}

尝试在
内加载!ispostback
。否则,每次回发时都会重置该值

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
        {
            LoadReporting();
        }
    }
}

尝试在
内加载!ispostback
。否则,每次回发时都会重置该值

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
        {
            LoadReporting();
        }
    }
}

尝试在
内加载!ispostback
。否则,每次回发时都会重置该值

protected void Page_Load(object sender, EventArgs e)
{
    bool projectIdAvailable = this.Request.QueryString["ProjectID"] != null;
    if (!projectIdAvailable)
    {
        // Load list with buttons
        // PostBackUrl = "Reporting.aspx?ProjectID=0"
    }
    else
    {
        if(!IsPostBack)
        {
            LoadReporting();
        }
    }
}


@NicholasV.:当页面使用参数重新加载自身,然后才加载报告时,如果我只在if(!IsPostBack)中调用它,LoadReporting()部分将永远不会加载。@NicholasV.:当页面使用参数重新加载自身,然后才加载报告时,LoadReporting()部分将永远不会加载如果我只在if(!IsPostBack)内部调用,则永远不会加载该部分。@NicholasV.:当页面使用参数重新加载自身,然后才加载报告时,如果我只在if(!IsPostBack)内部调用,则永远不会加载LoadReporting()部分。@NicholasV.:当页面使用参数重新加载自身,然后才加载报告时,如果我只在if(!IsPostBack)内部调用LoadReporting()部分,它将永远不会加载。但如果我加载报告,它将始终是回发,因为您必须单击if(!ProjectDavaailable)部分中生成的按钮之一才能访问LoadReporting()。为什么不使用普通的ASP.NET按钮进行回发,为什么使用
响应。重定向
加载同一页面?我在运行时生成按钮,因为项目的数量是可变的(我将添加更多的代码)。除了响应重定向之外,我还应该使用什么?我只想要一个页面,根据参数的不同做出不同的反应。我应该只用两页纸吗?我还没有时间深入挖掘。但是为什么不使用web数据绑定控件(如
Repeater
)来动态创建控件呢?我甚至会将它们包装在一个UserControl中,以降低复杂性,提高可重用性和可维护性。您不需要重新加载页面,只需将数据源分配给控件(如
Repeater
),然后调用
DataBind()
。我通常不使用ASP.NET,原因很简单:我不知道最好的方法是什么,所以我只是手动完成所有操作。但是中继器会如何改变任何事情呢?编辑:谢谢,我会看一下。但如果我加载报告,它将始终是回发,因为您必须单击if(!projectdavaailable)部分中生成的按钮之一才能访问LoadReporting()。为什么不使用普通的ASP.NET按钮进行回发,为什么使用
响应。重定向
加载同一页面?我在运行时生成按钮,因为项目的数量是可变的(我将添加更多的代码)。除了响应重定向之外,我还应该使用什么?我只想要一个页面,根据参数的不同做出不同的反应。我应该只用两页纸吗?我还没有时间深入挖掘。但是为什么不使用web数据绑定控件(如
Repeater
)来动态创建控件呢?我甚至会将它们包装在一个UserControl中,以降低复杂性,提高可重用性和可维护性。您不需要重新加载页面,只需将数据源分配给控件(如
Repeater
),然后调用
DataBind()
。我通常不使用ASP.NET,原因很简单:我不知道最好的方法是什么,所以我只是手动完成所有操作。但是中继器会如何改变任何事情呢?编辑:谢谢,我会看一下。但如果我加载报告,它将始终是回发,因为您必须单击if(!projectdavaailable)部分中生成的按钮之一才能访问LoadReporting()。为什么不使用普通的ASP.NET按钮进行回发,为什么使用
响应。重定向
加载同一页面?我在运行时生成按钮,因为项目的数量是可变的(我将添加更多的代码)。除了响应重定向之外,我还应该使用什么?我只想要一个页面,根据参数的不同做出不同的反应。我应该只用两页纸吗?我还没有时间深入挖掘。但是为什么不使用web数据绑定控件(如
Repeater
)来动态创建控件呢?我甚至会将它们包装在一个UserControl中,这样可以降低复杂性,提高可重用性和维护性