Skip to content

Latest commit

 

History

History
 
 

CsQuery.WebFormsApp

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

##Sample WebForms Application

This application contains a simple framework that lets you pipeline CsQuery into Page and UserControl rendering so you can perform manipulation of the HTML before it is finally rendered. This works by overriding the Render and RenderControl methods. The app shows a few things you can do with this; to configure this in an existing application, follow the instructions below. It's probably easist just to look at the Default.aspx and WebUserControl1.ascx classes to see how it works, though.

####Configuration

You'll need to copy several classes to your application. They are all found in the CsQueryPage folder of the sample app:

CsQueryPage.cs
CsQueryUserControl.cs
ICsQueryControl.cs

####Using It

To create a page or user control that can use CsQuery, just inherit CsQueryPage or CsQueryUserControl instead of the default System.Web.UI.Page and System.Web.UI.UserControl classes. This exposes a new member:

public CQ Doc;

You also have two new overridabe methods:

public virtual void Cq_Render();

public virtual void Cq_RenderUpdatePanel(CQ dom, string updatePanelId);

You simply override one of these methods, and then write code to manipulate the Doc object (or the doc parameter, if it's an update panel).

For example, this code would put a border around every div:

public class _Default : CsQueryPage
{
  
    // Method is is called at `Page_Render` and the HTML will already reflect anything
    // that's been done with web controls.

    public void Cq_Render() {
        Doc["div"].Css("border", "1px solid red;");
    }
}

For UpdatePanels, a single method will be called for each one during an async update:

public void Cq_RenderUpdatePanel(CQ doc, string updatePanelId) {
        Doc["div"].Css("border", "1px solid red;");
}

In this case, the CQ object will be passed as a parameter, since it will be different for each UpdatePanel.