私は、ASP.NET MVCからASP.NET Core MVCへのWebform(WebFormテクノロジではなく、Webアプリケーションを取り除いたもの)をASP.NET MVCに移行しています。私の現在の最大の問題は、Webフォームの以前のバージョンで持っていた静的なクラスです。この静的クラスは.NETで利用可能でしたが.NETコアでは利用できなかったパッケージを使用します。静的クラスを.NETから.NETコアに移行する方法は?
この静的クラスのメソッドのいくつかについては、パッケージの問題を解決するために依存性注入を使用する必要があることを理解しています。ただし、静的クラスにパラメータを渡すことはできません。これを.NETコアの「反パターン」にします。
My Utils.cs静的クラスには、RenderPartialToString
とSendEmail
という2つのメソッドしかありません。 SendEmail
は非常にシンプルで、現在の.NETコアパッケージに問題はありません。しかし、私は現在のバージョンで動作しない私の静的クラスに次のコードがあります。
public static class Utils
{
public static readonly string ApiUrl = ConfigurationManager.AppSettings["ApiUrl"];
public static readonly string ApiKey = ConfigurationManager.AppSettings["ApiKey"];
public static string RenderPartialToString(Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return "document.write('" + sw.GetStringBuilder().Replace('\n', ' ').Replace('\r', ' ').Replace("'","\\'").ToString() + "');";
}
}
...
}
ViewEngineとのConfigurationManagerが移行するには、この静的クラスは非常に困難に.NETのコアでは使用できません。私は、これらの機能を両方とも依存性注入で実装できると信じています。しかし、私はこの静的クラスをどのように変更するのか分からないので、依存関係注入を使用して、これらのメソッドを自分のコントローラーで使用できるようになります。
いくつかの依存性注入の実装では、この静的クラスを.NETコアに単純に移行できますか? Utilsクラスのすべてのインスタンスを変更して静的でないようにする必要はありますか?
"ASP.NET MVCからのWebフォームアプリケーション..." ASP.NET MVCはASP.NET(別名WebForms)とは異なる技術です – Tseng
参照http://stackoverflow.com/questions/31905624/where-are-the-controllercontext-and-viewengines-properties-in-mvc-6- ViewEngineパーツ用のコントローラ。ConfigurationManagerの場合は、IOption 'https://docs.asp.net/en/latest/fundamentals/configuration.html –
Kalten
@Tsengが必要です。明確化しないと申し訳ありませんが、MVC(Webフォームではありません)を使用しているWebアプリケーションを削除しました。したがって、WebFormテクノロジではありません。 –