56

私はASP.NETを初めて使用します。デフォルトのASP.NETWebアプリケーションをチェックアウトしていました。デフォルトでは、いくつかのページ(Default.aspx、About.aspxなど)が付属しています。

Site.masterファイルは、ページのメインレイアウトを作成するファイルであることに気付きました。headしかし、タグにrunat="server"属性があることにも気づきました。

このタグがタグで使用されていることは知ってい<asp:XXX>ますが、なぜタグで使用されているのです<head>か?

また、その属性を削除すると、すべてのスタイルがWebページから削除されます。どうやらそれは何かをしているようです。私はそれが正確に何をしているのか理解していません...

では、なぜHTMLタグにあるのでしょうか... ??? サーバーで実行する必要のあるコードがそこに表示されません...

<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>
4

4 に答える 4

38

runat="server"要素からを削除するときに、スタイルが適用されなくなった理由を尋ねました<head>

簡単です。サーバー側で実行することにより、パーサーは~/スタイルシート宣言のfrom<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />をアプリケーションのルートパスに置き換えます。

~URLで違法です。したがって、これがパーサーに置き換えられない場合、ファイルは見つからないため、スタイルシートは適用されません。

ああ、ところで、要素にrunat="server"属性を設定する<head>と、そのすべてのサブ要素がサーバー上で実行されるようになります。したがって、<link>要素がサーバー上で実行されるのはなぜですか。

于 2013-05-24T06:59:19.893 に答える
34

head要素にはrunat="server"、それが(静的HTMLではなく)サーバーコントロールであることを示す属性が含まれています。すべてのASP.NETページは、System.Web.UI名前空間にあるPageクラスから派生します。このクラスには、ページの領域へのアクセスを提供するHeaderプロパティが含まれています。Headerプロパティを使用して、ASP.NETページのタイトルを設定したり、レンダリングされたセクションにマークアップを追加したりできます。次に、ページの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)

詳細については、「 VB.NETを使用したASP.NETでのメタタグの指定」を参照してください。

于 2012-07-16T18:47:03.873 に答える
20

ASP.NETのrunat="server"タグを使用すると、ほとんどすべてのHTML要素を、生成時にコードを介して操作できるサーバー側のコントロールとして変換/処理できます。一部のコントロールには明示的な実装があり、その他のコントロールは単に汎用コントロールの実装に戻ります。

于 2012-07-16T18:45:17.683 に答える
11

この属性は基本的に、要素、その属性、およびサーバーコントロールとしてのコンテンツを解析runatする必要があることをASP.Netに通知します。サーバー上で、応答を構成するために実行されるコードを有効にします。

これがないと、<head>セクションに含まれる子コントロールは解析されません。したがって、動的なheaderインクルード、タイトル操作、またはその他のサーバーコントロールは解釈されません。

于 2012-07-16T18:44:44.617 に答える