Understanding the runat server attribute

前端 未结 4 845
时光取名叫无心
时光取名叫无心 2020-12-03 02:13

I\'m really new to ASP.NET. I was just checking out a default ASP.NET web application. It comes by default with a few pages (Default.aspx, About.aspx etc).

I notice

相关标签:
4条回答
  • 2020-12-03 02:47

    The runat attribute basically tells ASP.Net that it needs to parse the element, its attributes and it's contents as a server control. Enabling code, on the server, to be executed to configure the response.

    Without it, any child controls contained within the <head> section will not get parsed. So, any dynamic header includes, title manipulations or any other server-controls will not be interpreted.

    0 讨论(0)
  • 2020-12-03 02:50

    You asked why the styles are not applied anymore when removing the runat="server" from the<head> element.

    It is simple: by running on the server side, the parser will replace the ~/ from the stylesheet declaration <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" /> with the root path of the application.

    The ~ is illegal in a URL. Thus, if this is not replaced by the parser, the file will not be found thus the stylesheet will not be applied.

    Oh, btw, setting the runat="server" attribute on the <head> element will force all its sub-elements to be run on the server, thus why the <link> element is run on the server.

    0 讨论(0)
  • 2020-12-03 03:11

    The runat="server" tag in ASP.NET allows the ability to convert/treat most any HTML element as a server-side control that you can manipulate via code at generation time. Some controls have explicit implementations, others simply revert to a generic control implementation.

    0 讨论(0)
  • 2020-12-03 03:12

    The head element contains a runat="server" attribute, which indicates that it is a server control (rather than static HTML). All ASP.NET pages derive from the Page class, which is located in the System.Web.UI namespace. This class contains a Header property that provides access to the page's region. Using the Header property we can set an ASP.NET page's title or add additional markup to the rendered section. It is possible, then, to customize a content page's element by writing a bit of code in the page's Page_Load event handler.

    ' 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)
    

    For more info see Specifying Meta Tags in ASP.NET with VB.NET.

    0 讨论(0)
提交回复
热议问题