モノレールには変換フィルタコンセプトがあり、レンダリングされたビューにさらに処理が適用されます。ユースケース:ASP.NET MVC後処理の表示
- プロセス値下げ
- 削除空白
- ストリップ不要な文字
私はそこに疑いはASP.NET MVCでこれを行うことのないアウトオブボックスの方法ではありませんが、誰にも示唆されたアプローチがありますか?私はNVelocityビューエンジンを使用しています。
モノレールには変換フィルタコンセプトがあり、レンダリングされたビューにさらに処理が適用されます。ユースケース:ASP.NET MVC後処理の表示
私はそこに疑いはASP.NET MVCでこれを行うことのないアウトオブボックスの方法ではありませんが、誰にも示唆されたアプローチがありますか?私はNVelocityビューエンジンを使用しています。
カスタムActionFilterを作成し、OnResultExecutedメソッドをオーバーライドして余分な処理を行い、その属性でコントローラを装飾します。
私が実装した可能な解決策は、カスタム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);
関連するソースはこちらです。
どのようにして、OnResultExecutedでレンダリングされたビューを取得しますか? –