Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在运行时替换MVC应用程序部件和Razor文件提供程序_Asp.net Mvc_Razor - Fatal编程技术网

Asp.net mvc 在运行时替换MVC应用程序部件和Razor文件提供程序

Asp.net mvc 在运行时替换MVC应用程序部件和Razor文件提供程序,asp.net-mvc,razor,Asp.net Mvc,Razor,我有一个WebAPI/MVC应用程序,它加载带有嵌入式控制器和视图的独立插件程序集,并将它们放入MVC PartManager。这很好,但现在我希望能够在运行时交换这些部件,而无需重新启动服务器。我可以使用零件管理器。删除旧零件并添加新零件,但这似乎不够。当调用控制器时,我仍然从旧部分中的旧控制器得到响应 除了在PartManager中添加部件外,我还在Configure上的RazorViewEngineOptions中添加了一个EmbeddedFileProvider,因为仅仅添加一个Asse

我有一个WebAPI/MVC应用程序,它加载带有嵌入式控制器和视图的独立插件程序集,并将它们放入MVC PartManager。这很好,但现在我希望能够在运行时交换这些部件,而无需重新启动服务器。我可以使用零件管理器。删除旧零件并添加新零件,但这似乎不够。当调用控制器时,我仍然从旧部分中的旧控制器得到响应

除了在PartManager中添加部件外,我还在Configure上的RazorViewEngineOptions中添加了一个EmbeddedFileProvider,因为仅仅添加一个AssemblyPart似乎不足以让Razor引擎找到视图(我不确定是否正确)。但我不知道是否可以在运行时替换这个Razor文件提供程序?我还没找到办法


无论如何,做这一切的首选方法是什么,我的意思是用控制器、视图和静态资源加载/替换DLL。我的思路是否正确?

我认为Razor view引擎只配置了一次,因此您以后无法更改它们

你能做的就是

  • 运行多个视图引擎
  • 根据URL在它们之间进行选择(与您的情况相同,您希望为一个控制器使用不同的引擎)
Scott Hanselsman的《CUSTOMMOBILEVIEWENGINE》一节对此进行了描述。他所做的是为不同的设备使用不同的视图引擎,但您可以根据自己的目的调整该技术