C# 在页面加载之前调用函数
我有一个调用函数a()的按钮 当我点击它时,我希望按该顺序拨打电话:C# 在页面加载之前调用函数,c#,asp.net,C#,Asp.net,我有一个调用函数a()的按钮 当我点击它时,我希望按该顺序拨打电话: A() Page_Load() 现在它正在做: Page_Load() A() 有没有办法解决这个问题,或者只是出于设计,而我对此无能为力?您需要在Page\u Init中调用您的函数。Page_Init将在Page_加载之前发生 这里有一个。不完全正确:ASP.NET在处理诸如按钮单击等回发事件之前总是调用页面加载 但是,在处理回发事件后,可以通过重定向到页面来完成所需的操作。(使用。) 在Page_Load方法中,通过
A()
Page_Load()
现在它正在做:
Page_Load()
A()
有没有办法解决这个问题,或者只是出于设计,而我对此无能为力?您需要在Page\u Init中调用您的函数。Page_Init将在Page_加载之前发生
这里有一个。不完全正确:ASP.NET在处理诸如
按钮单击等回发事件之前总是调用页面加载
但是,在处理回发事件后,可以通过重定向到页面来完成所需的操作。(使用。)
在Page_Load方法中,通过先检查是否是回发,可以避免两次运行任何相关代码:
if (!this.IsPostBack) {
// Do something resource-intensive that you only want to do on GETs
}
我认为这是不可能的,至少你的问题描述的方式是不可能的。当您单击某个按钮时,它将向服务器发送请求,服务器将开始处理该请求,并遵循Joseph发布的ASP.NET页面生命周期
或者,您可以尝试在不重新加载当前页面的情况下对页面进行AJAX调用,并执行所需的任何处理。控制事件(如按钮的单击事件)在页面加载后调用。无法保证在加载页面之前完全初始化控件。如果您确实需要在调用page_load之前根据按钮是否被按下来调用函数,则必须检查请求以检查按钮是否被按下(基本上是老式ASP)最简单的方法是使用一个HTML提交按钮,检查它是否在每次回发页面的表单中
public void Page_Init(object o, EventArgs e)
{
if(!string.IsNullOrEmpty(Request.Form["MyButtonName"]))
{
A();
}
}
在ASP.NET代码中:
<Button Type="Submit" Name="MyButtonName" Value="Press Here To Do Stuff Early!" />
我认为这会起作用。正如Jeff Sternal回答的那样,后重定向Get模式是解决此类问题的一种好方法
在我的情况下,我有一个日历,如果你点击一个日期,它会将它添加到一个调度程序中。调度程序在每个新日期上都有按钮,需要将onclick函数绑定到这些按钮上
由于新行是使用linkbutton(在日历上)添加的,因此在代码中,新的调度程序日期是在回发事件处理中添加的,这意味着新的按钮集不会绑定命令
这是在页面加载之前调用Page Init时要执行的操作
看看ASP.net页面的生命周期
public void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//CALL YOU FUNCTION A()
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
}
如果您的实际目标是让“页面加载代码”发生在事件处理程序运行之后——例如,如果单击按钮更改了数据库中的某些内容,并且希望在加载时更新的数据反映在页面上——那么您可以拥有“页面加载代码”从比事件处理程序晚调用的方法(例如Page\u PreRender
)调用,而不是从Page\u Load
调用
例如,下面是一个.aspx.cs页面类的简化摘录,该类有一个在页面填充逻辑之前运行的按钮事件处理程序,以及一条只有在单击按钮后才在页面上可见的确认消息:
// Runs *before* the button event handler
protected void Page_Load() {
_myConfirmationMessage.Visible = false;
}
// Runs *after* the button event handler
protected void Page_PreRender() {
// (...Code to populate page controls with database data goes here...)
}
// Event handler for an asp:Button on the page
protected void myButton_Click(object sender, EventArgs e) {
// (...Code to update database data goes here...)
_myConfirmationMessage.Visible = true;
}
但是我希望我的函数在你按下按钮时被调用,而不是在每次页面加载时被调用。谢谢你的回答,但是我检查了你的链接,这不是我想要的。当按下按钮时,我正试图做些什么。我不知道如何使用您在此处提供的信息来实现这一点。他不想调用任何方法,他希望在page_Load之前调用事件处理程序。如果您愿意,我可以将您的注意力引向几个不可能的壮举,但总有其他选择……:)我是讨厌的黑客之王。虽然很讨厌,但我喜欢它+1也一样,如果它起作用了,而且没有更干净的东西出现,我会接受你可能会给符文FS一点爱。。。从技术上讲,他比我早几秒钟回答了同样的问题。的确,鲁内夫斯的回答也不错。我接受这个,因为它对我更有意义,帮助我解决了问题。我仍然对runefs的@Margg thx进行了投票,似乎我需要提高我的沟通技能我的解决方案与Anderson完美匹配(没有代码来解释它)Anderson为您提供了一个很好的例子,是一项很好的运动:)