2009-04-23 17 views
0

モノレールには変換フィルタコンセプトがあり、レンダリングされたビューにさらに処理が適用されます。ユースケース:ASP.NET MVC後処理の表示

  • プロセス値下げ
  • 削除空白
  • ストリップ不要な文字

私はそこに疑いはASP.NET MVCでこれを行うことのないアウトオブボックスの方法ではありませんが、誰にも示唆されたアプローチがありますか?私はNVelocityビューエンジンを使用しています。

答えて

1

カスタムActionFilterを作成し、OnResultExecutedメソッドをオーバーライドして余分な処理を行い、その属性でコントローラを装飾します。

+0

どのようにして、OnResultExecutedでレンダリングされたビューを取得しますか? –

1

私が実装した可能な解決策は、カスタムViewResultを作成してそこで作業を行うことです。私は基本的に、オーバーライドされたExecuteResultに通常の実装をコピーして貼り付け、そこでレンダリングされた出力を調整したので、これはエレガントなソリューションではありません。このライン:

View.Render(viewContext, context.HttpContext.Response.Output); 

は次のようになります。 http://aspnet.codeplex.com/SourceControl/changeset/view/23011#288022

これはIMOそれをやってするのはかなり恐ろしい方法ですが、それは動作します:

TextWriter writer = new StringWriter(); 

View.Render(viewContext, writer); 

string renderedResult = writer.ToString(); 

renderedResult = renderedResult.Replace("hello", "goodbye"); 

context.HttpContext.Response.Output.Write(renderedResult); 

関連するソースはこちらです。

関連する問題