Compreender o atributo runat server

Sou mesmo nova nisto. ASP.NET estava só a verificar um padrão. ASP.NET aplicação web. Ele vem por padrão com algumas páginas(padrão.aspx, por aí.aspx etc).

Eu notei que o Site.o arquivo mestre é o arquivo onde eu crio o layout principal para as minhas páginas. Mas também notei que a etiqueta head tem um atributo runat="server".

Eu sei que esta etiqueta é usada nas etiquetas <asp:XXX>, mas porquê numa etiqueta <head>???

também, quando eu remover esse atributo, então todos os estilos estão fora do pagina. Tão apavorante que está a fazer alguma coisa. Só não percebo o que está a fazer...

Então porque está lá, numa etiqueta HTML...??? Não vejo nenhum código que deva ser executado no 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>
 40
Author: Vivendi, 2012-07-16

4 answers

O elemento head contém um atributo runat="server", que indica que é um controlo do servidor (em vez de HTML estático). Todos ASP.NET as páginas derivam da classe de páginas, que está localizada no sistema.Site.Espaço de nomes UI. Esta classe contém uma propriedade de cabeçalho que fornece acesso à região da página. Usando a propriedade Header podemos definir um ASP.NET o título da página ou adicionar uma marcação adicional à secção renderizada. É possível, então, personalizar o elemento de uma página de conteúdo escrevendo um pouco de código no manipulador de eventos da Página Page_Load.

' 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 mais informações, ver a indicar as Meta-marcas em ASP.NET com VB.NET.

 21
Author: Joe, 2017-04-20 09:22:11

Perguntaste porque é que os estilos já não são aplicados ao remover o {[[0]} do elemento <head>.

É simples: ao executar no lado do servidor, o analisador irá substituir o ~/ da declaração da 'stylesheet' <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> pela localização raiz da aplicação.

O ~ é ilegal numa URL. Assim, se isto não for substituído pelo analisador, o arquivo não será encontrado assim a stylesheet não será aplicada.

Oh, btw, definindo o atributo runat="server" no <head> o elemento forçará todos os seus subelementos a serem executados no servidor, então por que o elemento <link> é executado no servidor.

 27
Author: xypho, 2013-05-24 06:59:19

O atributo {[[0]} diz basicamente: ASP.Net que ele precisa analisar o elemento, seus atributos e seu conteúdo como um controle de servidor. Activar o código, no servidor, para ser executado para configurar a resposta.

Sem ele, nenhum controlo de crianças contido na secção <head> não será analisado. Assim, qualquer dinâmica head inclui, manipulações de título ou qualquer outro servidor-controles não serão interpretados.

 8
Author: xandercoded, 2012-07-16 18:44:44

A marca runat="servidor" em ASP.NET permite a capacidade de converter/tratar a maioria dos elementos HTML como um controle do lado do servidor que você pode manipular através de código em tempo de geração. Alguns controles têm implementações explícitas, outros simplesmente revertem para uma implementação de controle Genérico.

 8
Author: David W, 2012-07-16 18:45:17