Web Forms :: Class-level Variable Loses It's Value?
Jun 22, 2010
Google usually solves my problems for me, but this one has me stumped. I have a page with the following code, in which lstPayments is a listview control:
As you can see, I'm trying to get an alert box displayed after a new payment is entered. As I expect, lstPayments_ItemInserted is executed first, and paymentWarning is duly set to true. However, when Page_PreRender subsequently executes, paymentWarning has been re-initialised: it's false again!
The only way I can get the class-level variable paymentWarning to retain it's value between the two event handlers is to declare it static, which I don't want to do for obvious reasons. There must be something I am failing to understand about how class-level variables work in aspx pages.
I'm having a hard time understanding why the following code doesn't work. I'm sure it's something remedial that I'm missing or not understanding. I currently have a page that asks for user input. If, based on the input and logged in user, I find data from this page already in the database, I need to update the existing records rather than creating new ones, so I set a class-level bool to true. The problem is, when MyNextButton is clicked, PreviouslySubmitted is still false. So, I'm not sure how to make the value of this variable persist.
public partial class MyForm : System.Web.UI.Page { private bool PreviouslySubmitted; protected void Page_Load(object sender, EventArgs e) { MyButton.Click += (o, i) => { q = from a in db.TableA where (a.SomeField == SomeValue) select a; if(q.Any()) { PreviouslySubmitted = true; //populate the form's fields with values from database for user to revise } } MyNextButton.Click += (o, i) => { //the value of PreviouslySubmitted is false at this point, //even if I made sure it was set to true the previous postback if(PreviouslySubmitted) { //update database } else { //insert into database } }
I am attempting to access a textbox control on a master page from a code behind base class but having problems. I have 3 levels of master pages. m1.master is the master page for m2.master which is the master page for m3.master.m3.master has a textbox as shown below
I have custom class level validation attribute, inheriting from ValidationAttribute, on my model.
How come it doesn't register a key in the ModelState when its IsValid is false? I can see the the error message in the ModelState.Values collection, but the ModelState.Keys collection only shows an empty string "". Can I provide a key for it - presumably this is because its not assigned to a property?
I wanna be able to use ModelState.Remove in my controller to remove this error upon a certain condition, but I have no Key!
I'm getting started with Astoria/ADO.NET Data Services/WCF Data Services. Looking through a lot of the code samples out there, it appears that the MimeType attribute used to be a method level attribute. After installing the latest update, it is now a class level attribute.
If I have more than one Service Operation that I want to return as a certain MimeType, then it appears now that I have to create a new service for each operation. Is this correct?
Most examples are like this:
[WebGet] [SingleResult] [MimeType("application/pdf")] public IQueryable<byte[]> FooPDF() { var result = from p in this.CurrentDataSource.MyPDFs where p.FooID == 2 select p; return result.Take(1).Select(p => p.PDF); }
I get "Attribute 'MimeType' is not valid on this declaration type. It is only valid on 'class' declarations." when I compile, because now I can't do this.
Now, I have to do this:
[MimeType("FooPDF", "application/pdf")] public class FooService : DataService<FooDBEntities> { public static void InitializeService(DataServiceConfiguration config) { config.SetServiceOperationAccessRule("FooPDF", ServiceOperationRights.All); } [WebGet] [SingleResult] public IQueryable<byte[]> FooPDF() { var result = from p in this.CurrentDataSource.MyPDFs where p.FooID == 2 select p; return result.Take(1).Select(p => p.PDF); } }
What's worse is that I can't add duplicate MimeType attributes to my class.
In page behind classes I am using a private and shared object (list<client> or just client) to temporary hold data coming from database or class library. This object is used temporarily to catch data and than to return, pass to some function or binding acontrol. 1st: Can this approach harm any way ? I couldnt analyse it but a thought was using such shared variables may replace data in it ?2nd: Please comment also on using such variables in BLL (to hold data coming from database) where new object of BLL class will be made everytime.
In page behind classes I am using a private and shared object and variables (list or just client or simplay int id) to temporary hold data coming from database or class library. This object is used temporarily to catch data and than to return, pass to some function or binding a control.1st: Can this approach harm any way ? I couldn't analyze it but a thought was using such shared variables may replace data in it when multiple users may be sending request at a time?
I have to handle error related to web application. I am not sure how its works. I am thinking that I will add an error page (error.aspx) and in global.asax ,application_onError, I will redirecting the user to error page and that should be enough ! i mean it will handle error automatically.
I load css and js files dynamicaly based on which controls are used on particular page. I am doing it by using following code:
[code]....
where AddLinks method adds HtmlLink controls to Page.Header with href attribute set to coresponding css and/or js file.
I would like to add Interface that would force new controls to have AddLinks method but it is impossible since it is a static method. Because my custom controls inherit from Control class I cannot use abstract class and/or virtual methods either. How can I achieve my goal?
I want to be able specify to do the following: Specify configuration settings such as appSettings and connectionStrings for multiple web apps in IIS7 No editing Machine.config or the machine-level web.config Web apps are distinct web sites in IIS (not subfolder apps) Is this possible without just duplicating the configs for each app?
I have several Include files in asp classic that I would like to convert to the class in C#, I have bunch of variable, Constraint, functions, DB connection. Is class the best way to convert them?
I understand the problem of the static variable inside a class in the web application, now I try to create a simple class to deal with SQL Server for example, so I created Static Method inside this class, this static method used in insert, update and delete from database, I wonder if this is safe, and there is no problems will appear ?
For some unknown reason I suddenly am unable to create an object variable for a Linq Data Class. If I create a new project and try the process again with the same database everything works as advertized.The code I am using is Dim db As New RoggDataContext which gives me an error on the object variable "db": Overload resolution failed because no accessibility 'NEW' accepts this number of arguments.I have looked inside every file in the Web Project like the web config to check the connection string, gobal, and designer.vb looking for any errors whit no JOY. I also tried to create a new form and code behind with a button and received the same error.This is mind blowing because as I already stated, I can create a new Web Site and the problem goes away.
I need to keep a global variable throughout the whole time the user is at my site, but do I use Application or a static class? The string variable should store a region name and my site makes a few changes depending on which region that has been set.
I read that Application was mainly for classic ASP, but I also read that a static class cannot be instantiated at runtime (e.g. when the user has logged in).
So, have I got something wrong here and which solution do I use?
I'm having a little problem with my file uploading. Does anybody know how to maintain the value in the FileUpload control between server posts?
I have a form which, among other things, uploads a file. I am using an ileUpload control (created dynamically) to let a user browse their PC for a file and then using the SaveAs method to upload the file to the server.When I'm selecting a file and Click on Next button for processing then selected file is lost.
Same is happening with me with HtmlTextArea (dynamically generated) , the problem was that I was not again re-initializing the controls after postback. What I did is re-initialized it in Init method of placeholder (as I have created/placed all dynamic controls in placeholder ).
But this thing is not working for fileupload control. I found solution in one of the forum is that "use hiddenField Control to transfer the selected file from the client to server"but this mechanism will only help to retain the name of file in a hidden variable and the FileUpload1.PostedFile.SaveAs(filename) will not work bcz of absense of object (fileupload1).
here is code:
[Code]....
I have done almost the same in different test project , it works . I dont know whats wrong?
I am creating a control that inherits from the RadioButton, so that I can set the GroupName property manually. Everything is working okay apart from the fact that when the page posts back, the RadioButton becomes unchecked if it has previously been checked. This is the first time I've tried inheriting from controls, so must be doing something really silly. I would welcome anyone helping me to improve my code so that the control's Checked value persists through postbacks. I am causing a postback using a button, not the actual RadioButton itself, if that makes any difference. Here is my code:
So when i select "Yes" from the first drop down, the "hiddenDetail" label becomes visible and when i select "No" from q1 the "hiddenDetail" label becomes invisible.The problem is that because i am using AutoPostBack when you select "No" the "hiddenDetail" loses its children (i.e. the label inside it) which is obvious why but i am wondering, is there anyway i can make the "hiddenDetail" invisible (sort of like display:none in style) in VB without losing its children. Or is my only option to work with this in