如何自动将ASP.NET Standard Html Helpers转换为ASP.NET Core Tag Helpers
目前没有可以完美覆盖所有原生Html Helper场景的开箱即用自动转换工具,但有两个可大幅降低手动工作量的落地方案:
- 基于Roslyn Razor解析能力开发自定义批量转换脚本
微软官方开放了完整的Razor语法语义解析API,你可以针对项目中高频使用的@Html.Label、@Html.TextBox、@Html.DropDownList等原生方法,定制转换规则。以你给出的示例为例:
原写法:@Html.Label(Global.SerialNo, htmlAttributes: new { @class = "control-label col-md-2" })
只需要通过解析提取第一个入参作为标签文本、htmlAttributes内的键值对作为标签属性,即可直接生成目标写法<label class="control-label col-md-2">@Global.SerialNo</label>。这种方案适配性最高,只要提前梳理完项目中用到的所有原生Html Helper重载形式,就能实现100%的自动转换。 - 使用开发者开源的本地转换脚本
有不少经历过相同迁移场景的开发者开源了自用的批量转换工具,默认已经支持绝大多数常用原生Html Helper的转换,你可以直接在本地运行,不需要对外上传代码,只需要针对项目中的特殊写法做少量规则调整即可。
- 特别提示:所有自动转换完成后必须做对应页面的功能测试,避免因参数重载、自定义Html Helper扩展方法、匿名类嵌套属性等特殊场景导致转换出现偏差。
内容的提问来源于stack exchange,提问作者jasonc24
相关产品推荐
相关产品推荐

