RegisterClientScriptBlock is for returning blocks of client-side script containing functions. RegisterStartupScript is for returning blocks of client scripts, not packaged in functions. In other words, code that's to execute when the page is loaded. The latter positions script blocks near the end of the document so elements on the page that the script interacts with are loaded before the script runs. <%@ Reference Control="MyControl.ascx" %>