【问题标题】:Keep the Views strongly typed when using AngularJs in MVC在 MVC 中使用 AngularJs 时保持视图的强类型
【发布时间】:2017-01-12 23:46:13
【问题描述】:

我喜欢 MVC 的主要原因之一是视图和控制器都是强类型的。这意味着我可以使用 Razor 语法直接从视图中调用模型中定义的变量:

<p>
    @Model.MyProperty // strongly typed
</p>

在这样做的同时,Visual Studio 将提供智能感知、智能重构选项等。其优势显而易见。

相反,如果我决定使用 AngularJs(或任何其他客户端 UI 框架,实际上),我的视图将如下所示:

<p>
    {{myProperty}} // this is just a string!
</p>

没有智能感知,没有重构选项...我一个人呆在这里,因为 IDE 不知道 {{myProperty}} 是什么以及它在哪里定义。换句话说,除了开发人员对应用程序结构及其变量名称的个人知识之外,视图、模型和控制器之间没有契约。

由于我所有的 Angular 模型都与 Typescript 界面相关联,是否有任何工具可以在基于这些 Typescript 界面的视图中为我提供智能感知?

【问题讨论】:

  • 完全一样的原因我不喜欢使用 ViewBag !
  • 你应该适应它,因为你现在正在开发一个 web api(我猜想),你不会关心前端是如何实现的或者它运行在什么框架上。作为开发人员,您的工作是遵循 Web api 的预期以成功调用它。在我的例子中,我使用 newtonsoft 命名空间中的 JsonProperty 注释我的模型属性,以成功地将我的请求绑定到我的模型
  • React 绝对可以,但我没有看到任何迹象表明 Angular 可以。
  • 我不确定 Typescript,但我使用 WebStorm 作为 AngularJS 1.5x 的 goto IDE。
  • React 或 WebStorm 如何在视图中实现智能感知?能详细点吗?

标签: c# angularjs asp.net-mvc razor typescript


【解决方案1】:

在做了一些研究之后,似乎没有任何编辑器完全支持这个特定的功能(TypeScript 的 HTML 中的智能感知)。但是,您可以在某些中安装插件以获得名称的自动完成功能(因为括号语法特定于 Angular 和其他前端框架);有VS、VS Code、WebStorm的扩展:

--

此外,这篇博文可能无法解决您的问题,但如果您以不同的方式解决问题,可能会奏效: Strongly Typed Views with AngularJS

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多