如何在 Visual Studio 中为客户端 MVVM 语言获取 Razor 智能感知?
Posted
技术标签:
【中文标题】如何在 Visual Studio 中为客户端 MVVM 语言获取 Razor 智能感知?【英文标题】:How to get Razor intellisense in Visual Studio for client MVVM languages? 【发布时间】:2020-10-07 13:30:10 【问题描述】:我正在使用 MVVM 样式绑定的 javascript 库。 (它是用KO Punches 增强的knockout,但我认为这适用于任何此类库。)
一个典型的标记如下所示:
<table data-bind="visible: data.topPlayers.length > 0">
<tbody data-bind="foreach: data.topPlayers">
<tr class="bold">
<td>user_id</td>
<td>displayName</td>
<td class="stickers">sticker_Count.toLocaleString()</td>
</tr>
</tbody>
</table>
binding
语法导致库用模型对象上的该属性替换大括号中的值。
我的问题是 Visual Studio 对此一无所知,因此我没有得到任何 Intellisense 或设计时类型检查。特别是,如果我更改视图模型上的某些内容,例如,我将user_id
清理为userId
,我不会从编译器那里得到任何帮助来捕捉它。
这使得重构很危险。
有没有办法告诉 Visual Studio 我的标记和模型对象的语法,以便它可以在编辑器中提供这种帮助?
【问题讨论】:
你的项目类型是什么,你的VS版本是什么? 我使用的是“Microsoft Visual Studio Enterprise 2019,版本 16.6.2”,它是最新的。这是一个 .NET 4.7 MVC Web 项目。 【参考方案1】:如何在 Visual Studio 中为客户端 MVVM 获取 Razor 智能感知 语言?
恐怕你在 Visual Studio 中得不到你想要的。
默认JS intellisense无法获取Embedded绑定JS格式的intellisense。由于某些原因,智能感知无法识别它。
然而,在扩展名为 Angular Language Service 的 VS Code 中,您可以通过它获得智能感知。并且基于它,你可以在vs code中打开这样的网页,暂时修改一下。
===========================
PS:Resharper extension(VS 扩展)可能有这个功能,但它是付费扩展,新用户有 30 天的免费使用期。
如果Resharper没有这个功能,我建议你可以向our User Voice forum推荐一个功能。
之后,您可以在此处与我们分享链接,包括我们在内的任何有兴趣的人都会对其进行投票,以便获得更多微软的关注。
【讨论】:
我不能真正使用 VS Code,因为这是一个我与他人共享的大型项目,我们依赖于众多扩展和其他 Visual Studio 环境事物。我也没有使用角度本身,所以我不确定这会有所帮助。如果不使用 vbhtml 或 cshtml 视图文件,我可以创建一个专用的文件类型,并为它创建一个语言服务,有什么方法可以做到这一点?以上是关于如何在 Visual Studio 中为客户端 MVVM 语言获取 Razor 智能感知?的主要内容,如果未能解决你的问题,请参考以下文章
错误 C2536 的解决方法:无法在 Visual Studio 2013 中为数组指定显式初始化程序
如何在 Visual Studio 2017 中为 Windows XP 编译代码
如何在 Visual Studio 2013 中为 sqlite 配置实体框架 6
如何在 Visual Studio Code 中为 Python 设置虚拟环境?