来自Razor View的参考动态组件

时间:2014-09-11 17:30:39

标签: c# asp.net-mvc razor

如果我在MVC控制器中动态编译和加载程序集(在本例中为视图模型),如何在Razor视图中引用该程序集?我不能使用动态的模型类型,因为我使用lambda表达式。如果我创建一个DLL,将其写入bin文件夹,然后加载它,一切正常。但这会导致AppDomain回收。

我意识到在某些情况下这种方法可能是一个非常糟糕的主意。这是为了允许自动生成的代码和视图的预览功能。负载不是问题。我只是不希望每个请求都重启应用程序。

1 个答案:

答案 0 :(得分:0)

您可以将.cshtml文件放入一个未使用控制器和模型代码编译的单独项目中。由于.cshtml文件可以单独和动态编译,因此可以避免在重新编译目标程序集时重新编译。然而,它也会引入自己的痛点。

另一种选择是使用dynamic或其他非强类型方法,并认识到这意味着您不能使用lambda表达式或其他强类型结构。大多数需要lambdas的帮助程序也具有采用简单字符串的版本,并且在必要时它仍然可以手动构造表达式树,尽管它需要更多代码。