c # - error al usar FindControl en div id

Tengo un sitio ASP.NET al que trato de acceder a los elementos div mediante su ID del código C # detrás del archivo. Esencialmente quiero ver si existe un elemento div, y si es así, alterar sus propiedades.

He encontrado muchos recursos por ahí que apuntan a una docena de soluciones diferentes y ninguna de ellas parece funcionar.

HTML en la página ASP.Net:

<div class="contentArea">
     <div class="block" id="button1" runat="server">
            Some Content Here
     </div>
     <div class="block" id="button2" runat="server">
            Some Content Here
     </div>
     <div class="block" id="button3" runat="server">
            Some Content Here
     </div>
</div>

C # Code Behind (ejemplos que he probado):

System.Web.UI.HtmlControls.HtmlGenericControl div1 = (System.Web.UI.HtmlControls.HtmlGenericControl)this.FindControl("button1");
div1.Attributes["class"] = "classNameHere";

o

Control div1 = this.FindControl("button1");
div1.GetType();

Cuando el código llega a la segunda línea de cada uno de los ejemplos anteriores, aparece un error:

Referencia a objeto no establecida como instancia de un objeto.

Si intento lo siguiente:

if (div1 != null)
{
    // Do Something;
}

Nunca pasa nada porque div1 siempre se establece en nulo. Irónicamente, si miro la ventana Locales y examino esto, puedo ver los identificadores de los botones en la lista, así que sé que están ahí, pero el sistema está actuando como si no estuviera encontrando el control.

Mi objetivo final es encontrar el número máximo de ID de los botones divs (mirando mi ejemplo de html, el ID máximo sería 3 (botón 3). Tal vez haya una mejor manera de hacerlo, pero de cualquier manera, una vez que tenga mi ID máx. Quiero poder tocar cada div y alterar algunas propiedades de css.

Aunque podría hacer todo esto fácilmente a través de jQuery, en este caso necesito hacer esto en C #.

Cualquier ayuda es muy apreciada. Si necesitas más información, avísame.

ACTUALIZAR&nbsp;Creé un nuevo proyecto web de C # desde cero. Después de agregar una página maestra (y no alterarla) y agregar un formulario web usando la página maestra, solo agregué una línea al formulario web bajo ID de contenido = "Contenido2":

<div id="button1"></div>

Desde el código c # detrás todavía me encuentro con el mismo problema que antes.

ACTUALIZACIÓN FINAL Y RESPUESTA&nbsp;Estoy sorprendido de que nadie (incluido yo mismo) haya captado mi error en la actualización anterior. Nunca puse runat = "server" cuando creé un nuevo proyecto desde cero debajo de la div. Aquí es cómo solucioné mi problema bajo mi nuevo proyecto desde cero:

Añadir runat = "server" a div:

<div id="button1" runat="server"></div>

Luego hice un FindControl en el ContentPlaceHolder bajo la MasterPage:

ContentPlaceHolder myPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");

Nota: Este es el aspecto del código ContentPlaceHolder en la página Site.Master creada de forma predeterminada:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

</asp:ContentPlaceHolder>

Después de encontrar este ContentPlaceHolder en el código detrás, busqué en este marcador de posición para button1:

using System.Web.UI.HtmlControls;
HtmlControl myControl = (HtmlControl)myPlaceHolder.FindControl("button1");

Finalmente verifico si myControl es nulo:

if (myControl != null)
{
    \\ Do Something
}

Cuando ejecuté este código, encontró el div que estaba buscando. Aquí está el código completo detrás de todos juntos:

using System.Web.UI.HtmlControls;

ContentPlaceHolder myPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
HtmlControl myControl = (HtmlControl)myPlaceHolder.FindControl("button1");

if (myControl != null)
{
    // Do Something
}