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