viewcomponent tag net mvc aspx asp asp.net

asp.net - mvc - tag helpers asp net core



Entendiendo el atributo del servidor de ejecuciĆ³n (4)

El atributo runat básicamente le dice a ASP.Net que necesita analizar el elemento, sus atributos y su contenido como un control de servidor. Código de habilitación, en el servidor, para ser ejecutado para configurar la respuesta.

Sin él, no se analizarán los controles secundarios contenidos en la sección <head> . Por lo tanto, cualquier head dinámico, manipulaciones de títulos o cualquier otro control de servidor no será interpretado.

Soy realmente nuevo en ASP.NET. Estaba comprobando una aplicación web ASP.NET predeterminada. Viene de forma predeterminada con algunas páginas (Default.aspx, About.aspx, etc.).

Noté que el archivo Site.master es el archivo donde creo el diseño principal de mis páginas. Pero también noté que la etiqueta head tiene un atributo runat="server" .

Sé que esta etiqueta se usa en etiquetas <asp:XXX> , pero ¿por qué en una etiqueta <head> ?

Además, cuando elimino ese atributo, todos los estilos desaparecen de la página web. Así que aparentemente está haciendo algo. Simplemente no entiendo lo que está haciendo exactamente ...

Entonces, ¿por qué está ahí, en una etiqueta HTML ...? No veo ningún código allí que deba ejecutarse en el servidor ...

<head runat="server"> <title>Hallo</title> <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> <!-- This part is run on the server. So why does the head tag also need a runat=server ?? --> <asp:ContentPlaceHolder ID="HeadContent" runat="server"> </asp:ContentPlaceHolder> </head>


El elemento head contiene un atributo runat="server" , que indica que es un control de servidor (en lugar de HTML estático). Todas las páginas ASP.NET se derivan de la clase Page, que se encuentra en el espacio de nombres System.Web.UI. Esta clase contiene una propiedad de encabezado que proporciona acceso a la región de la página. Usando la propiedad Encabezado podemos establecer el título de una página ASP.NET o agregar un marcado adicional a la sección representada. Es posible, entonces, personalizar el elemento de una página de contenido escribiendo un poco de código en el controlador de eventos Page_Load la página.

'' Programmatically add a <meta> element to the Header Dim keywords As New HtmlMeta() keywords.Name = "keywords" keywords.Content = "master page,asp.net,tutorial" Page.Header.Controls.Add(keywords)

Para obtener más información, consulte Especificar metaetiquetas en ASP.NET con VB.NET .


La etiqueta runat = "server" en ASP.NET permite la capacidad de convertir / tratar casi cualquier elemento HTML como un control del lado del servidor que puede manipularse a través del código en el momento de la generación. Algunos controles tienen implementaciones explícitas, otros simplemente vuelven a una implementación de control genérica.


Preguntó por qué los estilos ya no se aplican al eliminar el runat="server" del elemento <head> .

Es simple: al ejecutarse en el servidor, el analizador reemplazará ~/ de la declaración de la hoja de estilo <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> con La ruta raíz de la aplicación.

El ~ es ilegal en una URL. Por lo tanto, si esto no es reemplazado por el analizador, el archivo no se encontrará y la hoja de estilo no se aplicará.

Oh, por cierto, establecer el atributo runat="server" en el elemento <head> obligará a que todos sus subelementos se ejecuten en el servidor, por lo que el elemento <link> se ejecuta en el servidor.