写点什么

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

  • 2011-01-04
  • 本文字数:699 字

    阅读完需:约 2 分钟

上个月,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

2011-01-04 07:591366
用户头像

发布了 88 篇内容, 共 268.5 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

【算法技术专题】如何用Java实现一致性 hash 算法( consistent hashing )(上)

码界西柚

算法 一致性hash 11月日更

Prometeus 2.31.0 新特性

耳东@Erdong

release Prometheus 11月日更

怎么清空.NET数据库连接池

喵叔

11月日更

数据库连接池Demo(1)单线程初步

Java 数据库 连接池

[ CloudWeGo 微服务实践 - 08 ] Nacos 服务发现扩展 (2)

baiyutang

golang 微服务 11月日更

请问软件测试和渗透测试的区别是什么?

喀拉峻

网络安全 渗透测试

验证码

卢卡多多

图片验证码 11月日更

SuperEdge 和 FabEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

腾源会

开源 边缘计算 superedge

腾讯发布 K8s 多集群管理开源项目 Clusternet

腾源会

开源 K8s 多集群管理 Clusternet

腾讯自研分布式远程Shuffle服务Firestorm正式开源

腾源会

大数据 开源 腾讯

科技热点周刊|马斯克套现 440 亿;苹果推出数字身份证;Meta 与微软合作;华为捐赠欧拉

青云技术社区

云计算 物联网

Golang Gin 框架入门介绍(二)

liuzhen007

11月日更

【高并发】通过源码深度解析ThreadPoolExecutor类是如何保证线程池正确运行的

冰河

Java 并发编程 多线程 高并发 异步编程

腾讯开源全景图再刷新:社区贡献领跑国内企业,获超过38万开发者关注

腾源会

开源 腾讯

腾讯云原生开源生态专场召开,洞察开源云原生技术发展趋势和商业化路径

腾源会

腾讯云 开源 云原生

范学雷的专栏《深入剖析 Java 新特性》

IT蜗壳-Tango

11月日更

进击的Java(七)

ES_her0

11月日更

架构训练营 模块三 作业

dog_brother

「架构实战营」

在华为云专属月,找到开启互联网第二增长曲线的一把钥匙

脑极体

Ubuntu系统下《汇编语言》环境配置

codists

汇编语言

Android C++系列:JNI操作Bitmap

轻口味

c++ android jni 11月日更

如何评价一个开源项目(一)--活跃度

腾源会

开源

消息队列表设计

Rabbit

这一次,Google 终于对 Web 自动化下手了!

星安果

chrome 自动化

一文告诉你 K8s PR (Pull Request) 怎样才能被 merge?

腾源会

k8s

CNCF 沙箱再添“新将”!云原生边缘容器开源项目 SuperEdge 正式入选

腾源会

开源 容器 云原生 cncf

多模态内容理解算法框架项目 Lichee 正式开源,为微服务开源社区贡献力量

腾源会

开源

我在 IBM 从事开源工作的十一年

腾源会

开源

中央银行、不平等和新技术:使用分布式账本、可编程合约和密码学的蓝图

CECBC

15 K8S之容器安全上下文

穿过生命散发芬芳

k8s 11月日更

你不知道的开源分布式存储系统 Alluxio 源码完整解析(下篇)

腾源会

大数据 开源

随访:Razor与F#和其他语言_.NET_Jonathan Allen_InfoQ精选文章