3

ASP.NET WebForms の "override void Render" に相当する ASP.NET MVC は何ですか? 出力がクライアントに送信される前に、土壇場で処理を行う機会はどこにありますか?

たとえば、これを運用コードでは使用しませんが、WebForms アプリの MasterPage に配置されたときに、サイト全体の<title>とマークアップをクリーンアップする方法を示します。<head>

    protected override void Render(HtmlTextWriter writer)
    {
        System.IO.StringWriter sw = new System.IO.StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        base.Render(htw);
        htw.Close();
        string h = sw.ToString();
        string fhtml = h.Replace("<title>\r\n\t", "\n<title>")
                             .Replace("\r\n</title>", "</title>")
                             .Replace("</head>","\n</head>");
        // write the new html to the page
        writer.Write(fhtml);
    }

ASP.NET MVC で最終的なテキスト レンダリングを試すための最良の方法は何ですか?

更新:
Andrew Hare が言及したリンク (チャート) を見ると、View Engine でこれを実行できるように見えます。デフォルトの View Engine の動作方法をボルトで固定したり変更したりできますか、それともすべてを交換する必要がありますか?

4

2 に答える 2

4

これは、MVC が機能する方法ではありません。

すべての「onprerender」コードはビューで実行されます。データをコントローラーからビューに渡すまでに、ページ全体を表示するために必要なすべての処理を完了しているはずです。

これに対する唯一のわずかな例外は、モデルがビューによってプローブされている間、モデルがまだ少し処理を行う可能性があることです。

これには、パーシャルをオンまたはオフにするために必要な変数の設定などが含まれる場合があります。

于 2009-02-10T15:49:10.493 に答える
0

私が見る限り、あなたが -method でやり​​たいことは、セクションRender()内のいくつかのタグを再配置することだけです。で-sectionを作成する自家製の方法を使用していない限り、<head>これは ですでに正しく行われています。MVC<head>Masterpage

htmlのマークアップで直接希望する方法でタグを正確に配置することをお勧めしますMaster。またViewData["title"]、タグをコンテンツで埋めるために使用するものは何でも、改行で開始または終了しないようにすることをお勧めします。

于 2009-02-10T15:59:37.210 に答える