BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

随访:Razor与F#和其他语言

| 作者 Jonathan Allen 关注 527 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2011年1月5日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

上个月,Vladimir Kelman提出这样一个问题:可否将F#与新的Razor视图引擎搭配使用。在咨询过Scott Guthrie和Marcin Dobosz后,我们知道这是可行的,前提是你需要自己构建所有必要的插件才行。

第一个挑战就是语法。与老式的ASP风格的视图引擎不同,视图与内联代码之间的界限变得相当薄,很多语言从语法上就无法实现。根据Scott Guthrie所述:“从概念上来说,Razor是支持F#的(这意味着语法上是没问题的)”。接下来,他提到了与Marcin Dobosz的对话,后者解释了一些必要条件。

在Razor端(System.Web.Razor.dll),你需要实现自己的类,让其继承自CodeParser、RazorCodeGenerator和RazorCodeLanguage(还有其他必要的辅助类),然后使用RazorCodeLanguage.Language注册文件扩展。我们并没有提供实现自己的语言的任何指南,因此你需要查看源代码看看CSharp或VB相关的类是如何做的。

在MVC端(只有在支持@model时才需要这步),你需要继承自MvcWebPageRazorHost并返回具体的MVC解析器和生成器,他们需要继承自基本的解析器和生成器。这时还需要查看System.Web.Mvc.Razor命名空间中的类的源代码。你还可以在基本的解析器和生成器中实现它,这样所有一切都只能用在MVC项目中了。

当然了,这些只不过是让Razor能够处理新语言所需做的最少的工作。如果你想要编写解析器和生成器,那么你可能还想创建Visual Studio所需的项目、条目以及T4模板以提供更好的用户体验。

ASP.NET MVC 3 2010年10月 Beta版的源代码位于Codeplex上,基于“Microsoft Source License for ASP.NET Pre-Release Components”。

查看英文原文:Follow-up: Razor with F# and Other Languages

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT