ViewResultを返す一連のアクションメソッドを持つASP.NET MVCコントローラがあります。パラメータが存在しない場合、それは ASP.NET MVC - OnActionExecutedのビュー結果を変更する
ViewResult
を返し、
- :今、私は次のように特定のURLパラメータに基づいて、アクションの結果を変更することができるようにする必要がありますパラメータが存在している、ちょうど実行されたアクションから
ViewResult
を取る文字列にビューをレンダリングし、この文字列(生HTML)+(質問のない関連する)いくつかの追加の情報を含むFileStreamResult
を返す
I私のコントローラでOnActionExecuted
を無効にすることでこれを試みました:
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var viewResult = filterContext.Result as ViewResult;
if (viewResult != null /* && certain URL param present*/)
{
string rawHtml = RenderViewIntoString(viewResult);
filterContext.Result = new FileStreamResult(new MemoryStream(Encoding.UTF8.GetBytes(rawHtml)), "application/octet-stream");
}
}
しかし、いくつかの理由viewResult.View
はこちらnull
あるので、私は、RenderViewIntoString
を実装する方法を見つけることができません。
ビューを文字列にレンダリングするにはどうすればよいですか?
? –
@ JordyvanEijk、私は同じロジックを実装する必要がある私のコントローラ内に多くのアクションを持っているので。私は1つの方法ですべてそれを持っていたい。 –
[このような質問](http://stackoverflow.com/questions/553936/in-mvc-how-do-i-return-a-string-result)を見てください –