Web Forms :: When Does OnActiveStepChanged Get Processed In The Page Lifecycle
Sep 14, 2010Does the OnActiveStepChanged method of an asp:Wizard control get processed after Page_Load and before Page_LoadComplete?
View 1 RepliesDoes the OnActiveStepChanged method of an asp:Wizard control get processed after Page_Load and before Page_LoadComplete?
View 1 Replieswhen does the constructor on a page in asp.net page lifecycle get called?
View 1 RepliesI'm using a file manager-type WebControl that does lots of postbacks. It's placed inside a Page that is relatively complex. I would like to prevent the WebControl from causing the whole Page to go through the lifecycle.
Is there any way to isolate the WebControl from the rest of the Page? The only way I can think of is sticking the WebControl in a separate Page and creating an iframe in the original Page. Unfortunately that also means my WebControl properties/settings are no longer in the original Page. If I want two instances of the WebControl with different settings, then I have to create a Page for each setting and reference the correct one in my iframes. Not quite as "drag & drop" as I would like.
I have a page on which everything is loaded dynamically.
There is a Gridview (AutoGenerateColumns=true) and in the RowDataBound I check every column for a boolean datatype. If found I add a checkbox (autopostback=true) to the cell and register the CheckedChanged event.
The problem is, that I only get the CheckedChanged event, if I reload the grid in Page_Load:
protected void Page_Load(object sender, EventArgs e) {
LoadGrid();
}
But this is very expensive and causes that the db request will be executed twice. If I changed the code to what I want:
protected void Page_Load(object sender, EventArgs e) {
if (!this.IsPostBack)
loadGrid();
}
I get no CheckedChanged event.
Is there a possibility to get:
- Adding a Checkbox in RowDataBound
- Only "LoadGrid()" if it is no PostBack
- Getting the CheckedChanged event of the relevant row
I have a ListView in a web form (c#/.net 4.0). There is an ImageButton in the ItemTemplate.
After a postback, the ItemCommand event fires... and then everythings stops. No other page events occur. (Actually there is one other thing: Dispose() from ExtenderControlBase runs right after the event code finishes - this site has some AjaxControltoolkit controls, though there are none on this particular page).
There are a lot of things involved here so it's not really practical to post all the code, but generally, is there anything that could cause this?
I am rebinding the ListView on each postback, because I'm handling paging on the server side. When I assign the data source to the ListView, it's initially going to have no rows. So at the time the command event fires, the DataSource has no data in it, since it hasn't yet been loaded from the database and rebound. I can't think why this would cause the entire page to just stop loading, though.
The template is just this:
<ItemTemplate>
<tr>
<td class="DataListRow"><asp:ImageButton ID="edit" runat="server" ImageUrl="~/images/nav/datagrid_edit.gif" CommandName="edit" />
</td>
// a few orther cells
</tr>
</ItemTemplate>
I'm working on an ASP.NET project in which the vast majority of the forms are generated dynamically at run time (form definitions are stored in a DB for customizability). Therefore, I have to dynamically create and add my controls to the Page every time OnLoad fires, regardless of IsPostBack. This has been working just fine and .NET takes care of managing ViewState for these controls.
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
RenderDynamicControls()
}
private void RenderDynamicControls(){
//1. call service layer to retrieve form definition
//2. create and add controls to page container
}
I have a new requirement in which if a user clicks on a given button (this button is created at design time) the page should be re-rendered in a slightly different way. So in addition to the code that executes in OnLoad (i.e. RenderDynamicControls()), I have this code:
protected void MyButton_Click(object sender, EventArgs e)
{
RenderDynamicControlsALittleDifferently() [code]
My question is, is this really the only way to accomplish what I'm after? It seems beyond hacky to effectively render the form twice simply to respond to a button click. I gather from my research that this is simply how the page-lifecycle works in ASP.NET: Namely, that OnLoad must fire on every Postback before child events are invoked. Still, it's worthwhile to check with the SO community before having to drink the kool-aid.
On a related note, once I get this feature completed, I'm planning on throwing an UpdatePanel on the page to perform the page updates via Ajax.
I'm working with dynamic fields in ASP.NET due to a very specifc and rigid end-user requirement that would take 2 hours just to explain. Suffice it to say, I can't make the requirement go away.
Anyway, I have a working solution in place; no problems with controls loading, rendering or maintaining their ViewState. This is what my OnLoad looks like:
[code]....
I'm creating a page that users can upload a file to the webserver. After upload the page will then have a link to the file that has just been uploaded, along with any other files that have already been uploaded.As I am programatcially creating links to the files which have been uploaded, I have to do this in page_init or else the link button won't fire off it's event when clicked. MY web page does all this - it creates the link buttons and when I click on them, it calls the event method required i.e. a sub to download the file.
OK, the problem I've come accross is: when I click upload (to upload the file) - the page_init sub is called, displaying all the previously uploaded files as link buttons. Then my btnUpload_click sub is called, which uploads my current file. The only prob is the current file hasn't been displayed? I can only display links in the page_init, but because btnUpload is called after the page_init, the current file isn't uploaded until after page_init and therefore not dislayed?
I would like to create an attribute I can decorate specific fields or properties with. This attribute will throw an exception if the field or property it decorates is null at a given point in an ASP.Net page lifecycle. I.E. if a property, "x", is null at the prerender stage of an ASP.Net page, it will cause a "ArgumentNullException" exception to be throw with a nice message. Or a mean message. Either way, a message of my choosing.
Is this possible with standard .Net attributes, or would some kind of Spring.Net magic be required?
I have a user control embedded in a web part. It has the following snippets of code:
[code]....
Why are some controls initialised and others not? How do I get around this if I'd like to update the Text property on currentPageLabel?
Update:
I've placed breakpoints all the way through the page life cycle and found that nextButton and currentPageLabel are never initialised. The breakpoints were placed at OnLoad, CreateChildControls, goButton_Click, OnPreRender, Render and OnUnload.
I would like to wrap Session variables in a manner similar to that discussed on CodeProject.
[code]....
Here is my question: if I have to access CurrentUser multiple times in the same page, would I get a performance improvement by assigning it to a local variable instead of accessing the wrapping property? Or does the HttpSessionState make sure the object is only deserialized once per request, so that subsequent calls in the same http request don't cost any more?
I need to capture the amount of time that ASP.net takes to execute each page request in my application, but I need to exclude any network latency. I am currently capturing render times by using the StopWatch class and starting the stopwatch during the OnInit method of the page lifecycle and stopping it after the Unload method completes. It seems that the Unload method includes the time it takes send the request to the client, thus including any internet/network latency. What is the last possible point I could stop the stopwatch in the Page Life Cycle that would not include the time it takes to send the request to the client. Would it be directly before the Unload event?
Related question: Does ASP.net finish building the response before it starts sending to the client? Or does it start sending asynchronously, while the response is being formed?
I am using ASP.Net 2.0 with IIS 5 currently.
I have this code in a class that all of my pages inherit from:
readonly Stopwatch _serverExecutionTime = new Stopwatch();
protected override void OnInit(EventArgs e)
{
_serverExecutionTime.Start();
base.OnInit(e);
}
protected override void OnUnload(EventArgs e)
{
_serverExecutionTime.Stop();
base.OnUnload(e);
}
UPDATE
I tried capturing the execution time at the end of the OnRender method, at the start of the OnUnload method and at the end of the OnUnload method. In all three cases the difference in times was at most 1 millisecond. Even when testing this from a client in Europe to a server in the USA, the times were identical.
It seems that ASP.NET MVC just runs on top of ASP.NET WebForms. System.Web.Mvc.ViewPage in ASP.NET MVC inherits from System.Web.UI.Page which includes page lifecycle methods like OnRender and friends.
I have seen a couple of comments around the web to the effect that you should resist the urge to override these methods AT ALL COSTS!. Of course, this means that I find myself resisting the urge to do just that.Is there really that much wrong with something like the following?
public class SslPage : ViewPage
{
protected override void OnPreInit(EventArgs e)
{
// Make sure we are using SSL [code].....
One could debate the purity of putting that in a "View" but it seems plenty expedient.How dangerous/blasphemous is it to override these methods? When might it make sense?
I am using HTTP load testing tool to stress test my asp.net 2.0 application. I faced problem that, when I have 1 user access to the system (currently only test on login.aspx), it is very fast ~ 1-2 secs. However, when I run with 10 virtual users at the same time, it takes 10-12 secs for each.
User Response Time (s)
1 10.12
2 10.22
3 11.00
...
10 12.78
My question is, why ALL of them also takes 10-12 secs? Is it normal? I was thinking that should be some users take 2-3 secs and some 5-6 secs and etc.
I have a requirement where I want to trace what file is being processed by .net runtime. I mean if it is processing usercontrol x.ascx then it should return the whole path of that, and if it is processing usercontrol y.ascx it should return that. There are some candidates properties. equest.AppRelativeCurrentExecutionFilePathor TemplateControl.AppRelativeVirtualPath. Can somebody help me with this, or is there any other property that can give me the path.
View 1 RepliesLet's imaging there are 2 pages on the web site: quick and slow. Requests to slow page are executed for a 1 minute, request to quick 5 seconds.Whole my development career I thought that if 1st started request is slow: he will do a (synchronous) call to DB... wait answer... If during this time request to quick page will be done, this request will be processed while system is waiting for response from DB.[URL] One instance of the HttpApplication class is used to process many requests in its lifetime. However, it can process only one request at a time. Thus, member variables can be used to store per-request data.Does it mean that my original thoughts are wrong?Could you please clarify what they mean? I am pretty sure that thing are as I expect...
View 2 RepliesI have a page (i.e. page1.aspx) that a user will select from the record and it will press on the delete button. And it will redirect on another page (i.e. page2.aspx). On page2.aspx, I wrote my query for example
Code:
DELETE FROM items WHERE item_id=2 how may I know if the query was successfully processed because I have to redirect again on the first page.
I have a page that has a bunch of user controls. I would like to be able to see which user controls are performing badly. I would like to be able to see this in the trace. any way to do this.
View 2 RepliesJust trying to get to grips with the Razor syntax - i had noticed that by default new views will have the following code in them;
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
And the _layout.cshtml file accesses this variable
<title>@ViewBag.Title</title>
Is it just as simple as "the layout page gets fired last" or is there a firmer definition?
Here's the situation - Most of this ASP.NET Web Forms application (which uses a single master page for all pages) with Forms Authentication, has a standard session timeout, but there are some "modes" where we store an encoded cookie that links the user to their account.
I would like to manually check early on in the page lifecycle for the cookie, and if certain conditions are met, manually re-establish the user's authentication ticket/session.
Where's the best place to do this? Master page Page_Init? Global.asax BeginRequest?
in fact I have 2 webservice calls, one returns 8 results and the other one 4 results. So the same webservice is called twice but with different arguments and on different pages(browsers).What happens? even though I call on one page only one webservice(arguments1), I also get the results from webservicearguments2) which should be only on PAGE2to be more clear: I get both webservice results in both the pages, when I expect one for each page, it's like they share webservice results somehow,
View 3 RepliesI fill a third-pard component variable in Global.Application_BeginRequest(). Everything is fine until I set IIS7 into the Integrated mode. In that case the method Application_BeginRequest() is not called (Application_Start is ok).May be some module is registered wrong?(I have found a same problem here on forum, but without a solution:[URL]
View 1 RepliesIn building custom controls, I've seen two patterns for using the viewstate. One is to use properties to disguise the viewstate access as persistent data.
public bool AllowStuff
{
get
{
return (ViewState[constKeyAllowStuff] != null) ?
(bool)ViewState[constKeyAllowStuff] : false;
}
set { ViewState[constKeyAllowStuff] = value; }
}
The other is to use private member fields and to override the Load/SaveViewState methods on the control and handle it all explicitly:
protected override object SaveViewState()
{
object[] myViewState = new object[2];
myViewState[0] = base.SaveViewState();
myViewState[1] = _allowStuff;
return myViewState;
}
protected override void LoadViewState(object savedState)
{
object[] stateArray = (object[])savedState;
base.LoadViewState(stateArray[0]);
_allowStuff = (bool)stateArray[1];
}
(I cut out a lot of safety checking for clarity, so just ignore that.) Is there are particular advantage to one method over the other? I can't see how they'd differ much performance wise. Version 1 is lazy, so I guess you save a bit if you don't need that particular value during a pass. Version 1 is also more abstract, hides the details better. Version 2 is clearer about when the data is actually valid and ok to read or modify (between the load and save) because it more clearly works within the ASP.NET lifecycle. Version 2 does tend to require more boilerplate code though (a property, a backing private field, and viewstate handling in two places) as opposed to Version 1 which combines all that into one place.
When exactly is the view state accessible from the .Viewstate property of a control? From my observations, the closest event is on the Page.PreLoad event (at Page.InitComplete, Viewstate is still unavailable).
However, for controls that implement the IPostBackEventHandler interface the LoadValue() method is called and the .Viewstate collection is available (this occurs after Page.InitComplete and before Page.PreLoad).
Does anyone know of any additional events that can be used to know when Viewstate is available? Or any tricks (not excluding reflection on private/protected/internal members) that can be used to know if the Viewstate has loaded or not?
the exact difference between PreInit and Init in the ASP.NET Page LifeCycle ?
View 10 Replies