MVC アプリケーションは初めてで、かみそりビューを文字列にレンダリングしようとしています。私が持っているコードは、独自のコントローラー内から呼び出されたときにうまく機能しますが、別のコントローラーからコントローラーを呼び出そうとすると、ControllerContext を送信しているにもかかわらず、Controller コンテキストが null になります。私はコンテキストをどこかで失っていると確信しています。
ここにいくつかのコードがあります。
ここでコントローラーを呼び出します。
var emailController = new EmailController();
emailController.ControllerContext = this.ControllerContext;
emailController.SendMail(entry.email, entry.first, entry.word);
ここで、html の文字列を返すメソッドを呼び出します。"Template" はビュー (Template.cshtml) で、emailTemplate は私が作成したばかりのモデルです。
var emailTemplate = new EmailModel 
{ 
    name = name,
    emailAddress = emailAddress,
    sent = "not Sent"
};    
htmlFromView = renderRazorViewToString("Template", emailTemplate);
これは、ビューから html の文字列を返すメソッドです。問題は、viewContext が null を返すことです。
private string renderRazorViewToString(string viewname, object model)
    {
        ViewData.Model = model;
        using (var sW = new StringWriter())
        {
            var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewname);
            var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sW);
            viewResult.View.Render(viewContext, sW);
            viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
            return sW.GetStringBuilder().ToString();
        }
    }
他のコントローラーから EmailController を呼び出さない場合、これは完全に機能します。コンテキストもモデルに渡す必要がありますか?
助けてくれてありがとう。