asp.net-mvc - Razor 模板、 View 和 angular.js

标签 asp.net-mvc angularjs restful-architecture

TL;DR

使用 .NET Razor View 和 AngularJS 时的最佳实践是什么?

上下文

我们正在使用 mvc4 和 razor 开发一个公共(public)网站(不是 Intranet 应用程序),而且我们对客户端脚本不太熟悉,所以我们从我们所知道的开始:jQuery。 但现在事情变得更加复杂,我们想切换到 AngularJS。

在.NET部分,我们使用Razor模板和UIHintAttribute(加上一些自定义的)来渲染正确的html“控件”。我们还添加自定义 html 属性,为 jQuery 部分提供额外信息(例如工具提示的 title...)

因此,我们已经使用声明性方式来设置用户界面行为,这就是为什么 AngularJS 似乎是一个不错的选择。

问题

既然我们已经在服务器端定义了模型,并且 AngularJS 也使用模型,那么这不会迫使我们重复代码吗?

我们如何处理数据绑定(bind)功能,因为我们已经做了一些绑定(bind)服务器端(在 View 中)。我们应该创建一个完全异步的应用程序,从 AngularJS 进行 AJAX 调用来加载数据,还是可以混合使用两者?

在尝试使用这两种技术时我们还应该注意什么?

我在 Google 上做了一些研究,但找不到将 Razor View 和模板与 AngularJS 混合的详细方法...也许这不是一件好事?

最佳答案

在使用 MVC 和另一个 JavaScript 框架(Knockout)时,我们花了几个月的时间来处理这个问题。最终,如果您打算使用客户端 MV* 框架来渲染用户界面,您会发现放弃 Razor 将是您最好的选择。

大多数主要的 MV* JavaScript 框架(包括 AngularJS)都假设您将维护 UI 状态并基于 JavaScript 模型或 View 模型渲染用户界面。尝试混合服务器端渲染效果不会很好。

这并不是说 MVC 在开发 Angular 应用程序时没有用处。您仍然可以利用一些出色的功能,例如 ASP.NET Bundling and Minification 。有时,使用 Razor View 或部分 View 将 JSON 直接嵌入到页面中,而不是进行额外的 AJAX 调用,效果非常好。

至于型号,您可能想看看Breeze.js 。它是一个用于数据访问的 JavaScript 库,与服务器端的 ASP.NET 完美配合,可以共享模型元数据。

关于asp.net-mvc - Razor 模板、 View 和 angular.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17262309/

相关文章:

javascript - 使用 Kinvey.Social 通过 Angular 应用程序和 Promise API 登录

用于 haskell 中 ECG/EEG 传感器数据的 RESTful 接口(interface)

rest - 在 REST 中起草一篇文章

java - @GET 和 @POST 使用相同的路径

c# - Windows 10 IOT Raspberry PI 上的 ASP.NET MVC Web 应用程序

Javascript 在 ionic 模板中不起作用?

asp.net-mvc - MVC 应用程序导致 IE9 使用旧标准

javascript - 缩小的 AngularJS 给了我不可读的错误

c# - 如何在 ASP.NET 的代码隐藏中获取安全的 cookie 值

html - 在 bootstrap css 中垂直对齐缩略图?