【发布时间】:2014-05-07 06:46:48
【问题描述】:
我想在执行视图之前从(强类型)ASP.NET MVC 4 视图中确定视图模型类型。我的控制器逻辑使我能够确定视图名称,从而以编程方式加载视图,但似乎没有任何关于模型类型的线索:
var res = ViewEngines.Engines.FindPartialView(this.ControllerContext, viewName);
if (res.View != null)
{
Type modelType = res.View.GetType(); //returns System.Web.Mvc.RazorView
//...so it would be great to be able to do:
modelType = res.View.GetModelType();//...but this does not exist
}
我想这样做的原因是因为我自动将我的域模型映射到视图模型 - 请求包含我可以从中派生视图名称的信息,但不是视图模型类型,所以我想从视图以进行模型映射。
【问题讨论】:
-
你在哪里做的?在那个阶段,视图还没有被编译。当您获得
WebViewPage类型的对象时,您可以确定视图是否是通用的 -
您应该知道控制器中将要绑定到视图的对象和要渲染的视图。你不能从另一个中推断出一个。如果你必须这样做,你可能做错了什么。
-
如果您有单独的域和视图模型,我认为这不一定是正确的
标签: asp.net-mvc asp.net-mvc-viewmodel