使用StringTemplate作为ViewEngine的ASP.Net的MVC(一)

来源:互联网 发布:外包数据存储 编辑:程序博客网 时间:2024/06/05 19:06

我已经爱上了简单的MVC框架,从第一天开始。 但我一直觉得自己的陪同ViewEngine需要一个同样简单的最大价值。在与ASP.Net的MVC预览3以来,我很早就意识到,如果我没有找到一个ViewEngine我能得到的局,我会发现自己跑在输给... WebForms (喘气) 。

好消息 : ASP.Net的MVC提供4 ViewEngines开箱!

一个坏消息 :我真的不喜欢使用其中的任何。

最好的消息 :我不是*坚持*使用其中任何一方。

轮胎后踢的每ViewEngine我能得到我的手(包括黑客自己的模板语言只是为了好玩) ,我感到十分失望无休止页“标记汤” 。 我寻找的东西重量轻,速度快,易于阅读,和手腕的友好使我一个坚实的产品称为StringTemplate 。 对于那些谁从来没有听说过它,你可以查看这里 。 这是在第3版,并有一个活跃的用户社区。 这里有一个擦其头版:

StringTemplate是一个Java的模板引擎(与港口的C #和Python )生成的源代码,网页,电子邮件,或任何其他格式的文本输出。 StringTemplate尤其擅长多目标代码生成,多个网站的皮肤,和国际化/本地化

...

其显着特点是,它严格执行模型视图分离与其他引擎。 严格分开使网站和代码生成更加灵活和可维护性,而且还提供了一个极好的防御恶意模板作者。

真正的模型视图分离

那么StringTemplate所指的“执行模型视图分离与其他引擎” ? 嗯,首先... 字符串模板不是编译的C #类像aspx页面。 他们利用一个非常简单的属性容器(类似于可视在控制器) 。 没有任何实例变量中的范本。 所有数据处理必须在*之前*你进入范本。 唯一的逻辑,是允许在模板是简单条件语句和foreach循环。

现在,在你击中背部按钮本文,您可能要真正考虑如何使用aspx页面的反正。 当它归结到它,如果您删除数据呼叫从一个服务器控制,所有的左边的是属性,循环和条件语句。 换句话说,逻辑的UI具体 。

所以,当它归结为,他们唯一的损失时,你实际上放弃进入C #代码在您的模板... 是能够破解的业务逻辑到您的用户界面层。 这将是一件好事。 StringTemplate删除的诱惑,因为它消除了能力。