我已经阅读了几篇与我的问题相关的帖子,但没有一篇能解决我的特定问题。
下面的类包含一些信息,这些信息将传递给 Razor 引擎进行解析。
public class ActionResult
{
public object ViewModel { get; set; }
public string View { get; set; }
}
ActionResult.ViewModel 属性将保存一个视图模型类的实例,该实例可以是我的视图所需的任何自定义类型,因为我的视图是强类型的。
我将更新剃须刀引擎。
var razorEngine = new RazorEngine(razorScriptFile, _moduleResult.ModuleContext, "");
然后调用一个渲染方法,它的签名是......
public void Render<T>(TextWriter writer, T model){}
我面临的挑战是我不确定如何使用运行时可用的 actionResult 实例中的信息来调用此渲染方法。
如果我对方法进行硬编码,则调用它可以正常工作...
razorEngine.Render<MyViewModelType>(writer, actionResult.ViewModel);
但我想我应该做的是将 actionResult.ViewModel 作为 MyViewModelType 或者只是将其转换为 MyViewModelType。但我不确定如何调用 razorEngine.Render() 方法,同时在运行时提供它的类型。
使用.Net 4.5
编辑...
我想我认为我能做的是..
Type type = actionResult.ViewModel.GetType();
var model = actionResult.ViewModel as type;
但这不起作用