C# Tutorials and offshore development in India
    Tutorials   Resources   Forum   Reviews   Communities   Interview   Jobs   Projects   Training   Your Ad Here    
Silverlight Games | Mentor | Code Converter | Articles | Code Factory | Computer Jokes | Members | Peer Appraisal | IT Companies | Bookmarks | Polls | Revenue Sharing | Lobby | Gift Shop |


Prizes & Awards
My Profile



Active Members
TodayLast 7 Days more...






Resources » Articles » .NET Framework »

Move ViewState to the bottom of the page.


Posted Date: 03 Feb 2005    Resource Type: Articles    Category: .NET Framework
Author: Dolph LarsonMember Level: Bronze    
Rating: 1 out of 5Points: 10



The following code sniplet will do the trick.

Example:

First:
I created an assembly called WebPageBase and a class in the assembly called PageBase. My class inherits from
System.Web.UI.Page like a normal aspx page does.
namespace WebPageBase
{
///
/// Main Base for RealtorNavigator Web
///

///[Designer(typeof(System.Web.UI.Page))]
public class PageBase : System.Web.UI.Page
{
}

Next: Add this method in the PageBase class:
///
/// This method overrides the Render() method for the page and moves the ViewState
/// from its default location at the top of the page to the bottom of the page. This
/// results in better search engine spidering.
///

///
protected override void Render( System.Web.UI.HtmlTextWriter writer )
{
// Obtain the HTML rendered by the instance.
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter( sw );
base.Render( hw );
string html = sw.ToString();

// Hose the writers we don't need anymore.
hw.Close();
sw.Close();

// Find the viewstate. Hope M$ doesn't decide to change the case of these tags anytime soon.
int start = html.IndexOf( @"<input type=""hidden""name=""__VIEWSTATE""" );
// If we find it, then move it.
if( start > -1 )
{
int end = html.IndexOf( "/>", start ) + 2;

// Strip out the viewstate.
string viewstate = html.Substring( start, end - start );
html = html.Remove( start, end - start );

// Find the end of the form and insert it there, since we can't put it any lower in the response stream.
int formend = html.IndexOf("") - 1;
html = html.Insert( formend, viewstate );
}

// Send the results back into the writer provided.
writer.Write( html );
}

Finally:
Inherit your aspx pages from the base class.
Example:
public class Default : WebPageBase.PageBase
{
// Your code here
}
Note: I put my PageBase instead of the VisualStudio System.Web.UI.Page








Responses

Author: Mary Mathew    06 Feb 2005Member Level: Bronze   Points : 0
That's a cool one, Dolph. We are looking forward to see more from you.....


Author: Anil Rajan    21 Feb 2005Member Level: Gold   Points : 0
kudos,
hey that's very good , the basic of aspx page is all end up being rendered as html ,using this concept a lot of user control manipulation is possible and you have thought another good things.



Feedbacks      
Popular Tags   What are tags ?   Search Tags  
Sign In to add tags.
(No tags found.)

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: Inherited text control
Previous Resource: Exploring Strongly Typed DataSet
Return to Discussion Resource Index
Post New Resource
Category: .NET Framework


Post resources and earn money!
 
Related Resources



dotNet Slackers

About Us    Contact Us    Privacy Policy    Terms Of Use