如何在 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 设置虚拟环境?

如何在 Visual Studio Code 中为 React Native 设置调试?

如何在 Visual Studio 2017 中为 Linux 应用启用多线程