Working with Asp.Net variables in c#

Variables don’t automatically maintain state across page calls in ASP.NET. Asp.Net Page has a life cycle and being stateless, the information is lost at the end of this cycle, after a request has been served on the client side. One way is to use View-state for the persistence of the variables, but this significantly increases the size of a page and the data sent and received, making it slow. There are several solution for this.

  • SessionState
  • hidden fields
  • querystrings
  • Here is SessionState example

    // saving aHiddenVariable 
    Session["aHiddenVariable"]="aHiddenVariable";
    
    // retreiving aHiddenVariable 
    string aHiddenVariable = (string)Session["aHiddenVariable"];
    

    Here is hidden field example.

    In HTML, we simply need to create:

    <input type="hidden" id="aHiddenVariable">
    

    To set it’s value in javascript:

    document.getElementById("aHiddenVariable").value = "myValue"
    

    In ASP.NET code-behind, you use the Request object to retrieve the value.

    string aHiddenVariable= (string)Request.Params["aHiddenVariable"];
    

    Here is a sample for QueryString

    // setting quesryString
    // set s=feed, "text" to search
    http://codingphobia.com/?s=feed
    
    // retrieve variable
    string textToSearch= Request.QueryString["s"];
    

    Working with Files in c# – intoduction

    Here are some of many classes available to work with files

    using TextReder and TextWriter classes

    string filePath = @"E:\TestDocument.txt";
    
    // open file to read
    TextReader tr = File.OpenText(filePath);
    Console.WriteLine(tr.ReadToEnd());
    
    // must close file after reading
    tr.Close();
    
    string filePath = @"E:\TestDocument.txt";
    
    // open file to read
    TextReader tr = File.OpenText(filePath);
    Console.WriteLine(tr.ReadToEnd());
    
    // must close file after reading
    tr.Close();
    

    using StreamReader and and StreamWriter classes

    // open file to read file 
    StreamReader sr = new StreamReader(filePath); 
    Console.WriteLine(sr.ReadToEnd());
    
    // must close file after writing
    sr.Close();
    
    // open file to write
    StreamWriter sw = new StreamWriter(filePath);
    sw.AutoFlush = true;
    Console.WriteLine(sw.Encoding);
    Console.WriteLine(sw.FormatProvider);
    sw.WriteLine("Hello World");
    
    // must close file after writing
    sw.close()
    

    Reading / writing To IsolatedStorageFile using IsolatedStorageFileStream

    // declare file IsolatedStorageFile
    IsolatedStorageFile isoStore = 
    IsolatedStorageFile.GetUserStoreForAssembly();
    
    // create file Stream
    IsolatedStorageFileStream isoFS =
                    new IsolatedStorageFileStream("temp.txt", FileMode.Create, FileAccess.Write);
    
    // write to file
    sw = new StreamWriter(isoFS);
    sw.WriteLine("in iso storage" + "\n");           
    sw.WriteLine("in iso storage FInished");
    
    // must remember to close or the resouce is kept locked
    sw.Close();
    
    // read from IsolatedStorageFile
    isoFS = new IsolatedStorageFileStream("temp.txt", FileMode.Open, FileAccess.Read);
    sr = new StreamReader(isoFS);
    Console.WriteLine(sr.ReadToEnd());
    

    Working with Folder properties in C#

    Here is a simple programs that evaluates different properties for a folder in Windows

    class Folder : IComparable
        {
            public string name;
            public string path;
            public int size;
            public Folder(string _name, string _path, int _size)
            {
                name = _name;
                path = _path;
                size = _size;
            }
    
            #region IComparable Members
    
            public int CompareTo(object obj)
            {
                Folder folder = (Folder)obj;
                return folder.size.CompareTo(this.size);
            }
    
            #endregion
        }
    
    class SizeClculator
        {
            public static ArrayList directories = new ArrayList();
    
            public static void GetFolders(string path)
            {
                DirectoryInfo di = new DirectoryInfo(path);
                if (di.GetDirectories().Length > 0)
                {
                    foreach (DirectoryInfo dir in di.GetDirectories())
                    {
                        GetFolders(dir.FullName);
                    }
                }
                else
                {
                    int size = 0;
    
                    if (di.GetFiles().Length > 1)
                    {
                        FileInfo[] fileInfo = di.GetFiles();
                        foreach (FileInfo fi in fileInfo)
                        {
                            size = size + (int)fi.Length;
                        }
                    }
                    directories.Add(new Folder(di.Name, di.FullName, size));
                }
            }
            public static ArrayList GetFoldersList()
            {
                return directories;
            }
        }
    
    class Program
        {
            static void Main(string[] args)
            {
                string filePath = @"D:\Common\Test";
                SizeClculator.GetFolders(filePath);
                ArrayList al = SizeClculator.GetFoldersList();
                al.Sort();
                foreach (Folder folder in al)
                {
                    Console.WriteLine("Name:" +
                        "  || " + folder.name +
                        "  || Path: " + folder.path +
                        "  || Size: " + folder.size);
                }
                Console.ReadKey();
            }
        }
    

    Working with StringBuilder in C#

    This Post will look in to several Methods provided with StringBuilder class. There are several ways to declare and initialize an instance of StringBuilder class.

    // declare StringBuilder instance
    StringBuilder sb;
    
    // default constructor
    sb = new StringBuilder();
    
    // new stringbuilder with initial capacity 
    sb = new StringBuilder(10);
    
    // new stringbuilder with with a new string
    sb = new StringBuilder("codingphobia.com");
    
    // initial with initial capacity
    // and max limit over capacity
    sb = new StringBuilder(10, 100);
    
    // new stringbuilder with with a new string
    // and max limit over capacity
    sb = new StringBuilder("codingphobia.com", 1000);
    
    // new stringbuilder with new string
    // start index to place string
    // length of string
    //  max limit over capacity
    sb = new StringBuilder("codingphobia.com", 10, 16, 1000);
    

    Here are some of the built-in methods

    // append string to stringbuilder
    Console.WriteLine(sb.Append("First"));
    
    // get current capacity
    Console.WriteLine("current string capacity: " + sb.Capacity);
    
    // compare string with stringbuilder
    Console.WriteLine(sb.Equals("First"));
    
    // get the hash code for the string builder
    Console.WriteLine(sb.GetHashCode());
    
    // get the type for the object
    Console.WriteLine(sb.GetType());
    
    // get the length for the string
    Console.WriteLine(sb.Length);
    
    // gt the capacity for stringbuilder
    Console.WriteLine(sb.Capacity);
    
    // gt the max capacity for stringbuilder
    Console.WriteLine(sb.MaxCapacity);
    
    // get the string anfd write to console
    Console.WriteLine(sb);
    
    // insert char at specific index
    Console.WriteLine(sb.Insert(2, '-'));
    
    // replace a char at specific index
    Console.WriteLine(sb.Replace('-', ' '));
    
    // remove a char from specific index
    Console.WriteLine(sb.Remove(2, 1));
    

    Following methods allows us to extend our stringbuilder with appending value at the end.

    // Add string at the end of stringbuilder
    sb.Append("new string");
    
    // Add string with end of line at the end of stringbuilder
    sb.AppendLine("new string");
    
    // Add string at the end of stringbuilder, 
    // with information about the format etc
    sb.AppendFormat(new CultureInfo("en-US"),
                    "# # # ### ##", new char[] { 'A', 'S', 'D', 'F' });
    

    Following methods show how can we extend our string builder using insert method which has 18 overloads.
    most common are as follows

     // insert char at 0 index 
     sb.Insert(0, '0');
    
     // insert bool at 0 index
     sb.Insert(0, true);
    
     // insert char Array at 0 index
    sb.Insert(0, new char[] { '0', '1' });
    
    // insert double value at 0 index
    sb.Insert(0, 10.00);
    
    // insert decimal value at 0 index
    sb.Insert(0, 10);
    
    // insert char Array value, from  index 2 to 3,
    // at index 0 of string builder
    sb.Insert(0, new char[] { '1', '2', '3', '4' }, 1, 1);
    
    // insert string at 0 index
    sb.Insert(0, "a String");