我创建了一个相当通用的视图引擎,我最初创建的不是针对 ASP.Net MVC。不过现在,我认为将它放在至少可以被 MVC 项目轻松使用的地方是个好主意。我想知道我的项目是否可以很好地映射到 ASP.Net MVC 样式。
我遇到的问题是我的视图引擎在编译时通过 T4 模板生成所有内容。这意味着大部分内容都是静态类型的。然而,大多数 MVC 的类型似乎有点松散。
因此,对于某些视图,您可能会生成以下代码:
class MyView{
public string Foo{get;set;}
public int Bar{get;set;}
public string Render(){
return "This is my view: "+Foo+(string)Bar;
}
}
而且由于它的工作方式,即使有一个 views/FooView.html 文件,它也可能被处理成一个名为MyView
.
那么分配给MyView和ViewData
say的最佳方式究竟是怎样的呢?我应该只施加限制,即您只能在视图中使用单个字段(基本上是 a )还是?Foo
Bar
ViewData
我看到的另一个主要问题是 MVC 几乎完全基于文件。当您说RenderView("MyView",data);
它将在 /views/ 中查找名为 MyView.aspx 的文件或其他文件时(您当然可以更改它的外观和文件扩展名)。问题是它MyView
可能是从一个名为FooView.html
. 我应该基本上只为每个可用的视图生成一个巨大的列表吗?从类名到文件系统名的映射?或者,还有更好的方法?
注意:因为我从 T4 模板生成所有视图(并且可能生成 MVC 视图引擎),这意味着我可以编写大量列表和其他极其乏味或糟糕的代码。但在这种情况下,我觉得有比一个巨大的列表更好的方法,而且只保留一个列表会有潜在的问题。