Moving Viewstate Bottom Of Page in Asp.net

Most of the time we need to make our website search engine friendly for the better monetizing our site and for moving our site to top of the search result on search engine, for that we need to follow some of the rules provided by search engine and one of them is to move your page viewstate from head to bottom of the page for getting better search engine spidering.

Below is the code for moving hidden fields from page head to page bottom, there is two method for doing this task one for moving all hidden fields and another for moving specific hidden fields to the page bottom just pass the name of hidden fields as the argument of the method.

For moving specific hidden fields (ViewState) to bottom just pass the name of hidden fields.

protected override void Render(HtmlTextWriter writer)
{
    StringWriter responceSW = new StringWriter();
    HtmlTextWriter responceHTW = new HtmlTextWriter(responceSW);
    base.Render(responceHTW);
    string html = responceSW.ToString();
    html = MoveSpecificHiddenFieldsToBottom(html, "__VIEWSTATE", "__EVENTTARGET", "__EVENTARGUMENT");
    writer.Write(html);
}
private string MoveSpecificHiddenFieldsToBottom(string html, params string[] name)
{
    StringBuilder sbPattern = new StringBuilder();
    StringBuilder sbFounded = new StringBuilder();

    foreach (string nm in name)
        sbPattern.Append("<input.*.name=\"" + nm + "\".*/*>|<input.*.name=\"" + nm + "\"*></input>|");
    MatchCollection mc = Regex.Matches(html, sbPattern.ToString().Trim('|'), RegexOptions.IgnoreCase & RegexOptions.IgnorePatternWhitespace);

    foreach (Match m in mc)
    {
        sbFounded.AppendLine(m.Value);
        html = html.Replace(m.Value, string.Empty);
    }
    return html.Replace("</form>", sbFounded.ToString() + "</form>");
}


For moving all hidden fields (ViewState) to bottom.

protected override void Render(HtmlTextWriter writer)
{
    StringWriter responceSW = new StringWriter();
    HtmlTextWriter responceHTW = new HtmlTextWriter(responceSW);
    base.Render(responceHTW);
    string html = responceSW.ToString();
    html = MoveAllHiddenFieldsToBottom(html);
    writer.Write(html);
}

private string MoveAllHiddenFieldsToBottom(string html)
{
    string sPattern = "<input name=\"hidden\".*/*>|<input type=\"hidden\".*></input>";
    MatchCollection mc = Regex.Matches(html, sPattern, RegexOptions.IgnoreCase & RegexOptions.IgnorePatternWhitespace);
    StringBuilder sbFounded = new StringBuilder();
    foreach (Match m in mc)
    {
        sbFounded.AppendLine(m.Value);
        html = html.Replace(m.Value, string.Empty);
    }
    return html.Replace("</form>", sbFounded.ToString() + "</form>");
}


Popular Posts