2

具体的には、C#.aspxドキュメントを使用して小さなWebページを作成しました。私がドキュメントC#の一部に入れたすべてのコードは、次のようになります。<head>Page_Load

<script language="C#" runat="server">
protected void Page_Load(Object s, EventArgs e) {  
     Response.Write(@"<div class=""header"">Foo Bar</div>");
     ...
}
</script>

これはどういうわけか機能しますが、問題は、これによって生成されたhtmlが<html>ドキュメントの開始タグの上に詰め込まれ、文字設定が壊れて(メタタグを読み取らない?)、奇妙なことが起こらないことです。私は使用するASP.NETのが初めてで、それは明らかです。区切り文字<body>を使用して到達できるように、すべてのステートメントをどこに配置しますか?<%

4

1 に答える 1

7

あなたはそれらを体に入れるでしょう。この特定のコードは、あなたがそれを置いた場所に直接書き込む以上のことは何もしません。

<body>

    <%= @"<div class=""header"">Foo Bar</div>"; %>

</body>

これは単なるテストであると確信していますが、ページ内の特定の場所に書き込みたい場合は、ラベルまたはリテラルコントロールを使用することをお勧めします。

<head>
<script language="#C" runat="server">

    <script language="C#" runat="server">
    protected void Page_Load(Object s, EventArgs e)
    {  
         this.lblWriteToMe.Text = @"<div class=""header"">Foo Bar</div>");
         // ...
    }

    </script>
</head>

<body>
    <asp:Label ID="lblWriteToMe" runat="server" />
</body>
</html>

編集: テキストをhtmlブロックに配置するには、最初のサンプルで行ったように、テキストを表示するhtmlブロックに直接配置します。これは非常に「古典的なasp」の方法ですが、MVCは概念を復活させています。上部のscriptタグは、すべてのメソッド/イベント定義とグローバル変数/プロパティなどを保持できますが、Response.Writeまたはを使用<%=すると、表示されるとすぐに出力されます。標準のWebフォームページには、考慮しなければならないイベントライフサイクルがあり、それResponse.Writeを妨げる可能性があることに注意してください。メソッドまたはイベントで出力を生成した場合は、その結果をコントロールに投稿することをお勧めします。これにより、コントロールは、で出力されるhtmlブロック内のレンダリングの適切な順序を決定できますPage_Render

于 2012-06-04T20:37:25.720 に答える