文字列へのビューのレンダリングは何度も尋ねられてきましたが、私の質問は異なります。
ViewEngineResult.View
と呼ばれるメソッドがありますRender(ViewContext, TextWriter)
メールビューを格納するコントローラーを渡せばコードは正常に機能しますが、アクションメソッドが別のコントローラーで発生した場合は、ViewContextを変更してEmailControllersビューを表示できるようにする必要があります。
メソッドがどのビューフォルダーを検索するかを把握するためにどのプロパティを使用しているかを正確に把握できませんRender
。基本的に、メールビューフォルダーを検索するように指示できるように、それを把握しようとしています。
参考までに私のコードは次のとおりです。
public static string RenderPartialViewToString(Controller controller, string viewName, object model)
{
var oldModel = controller.ViewData.Model;
controller.ViewData.Model = model;
try
{
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindView(controller.ControllerContext, viewName,
null);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
controller.ViewData.Model = oldModel;
return sw.GetStringBuilder().ToString();
}
}
catch (Exception ex)
{
throw ex;
}
}
要約すると、Orders ControllerにFindView
、Ordersビューフォルダー内のビューを探すように渡す場合、Eメールビューフォルダーを探すように指示する必要があります。