使用.NET Razor视图和AngularJS时的最佳做法是什么?
上下文
我们正在开发一个使用mvc4和剃刀的公共网站(而不是Intranet应用程序),我们对客户端脚本不太熟悉,所以我们从我们所知道的开始:jQuery.
但是现在,事情变得越来越复杂,我们想转而使用AngularJS.
在.NET部分,我们使用Razor模板和UIHintAttribute(加上一些自定义的)来呈现正确的HTML“控件”.我们还添加了自定义html属性,以向jQuery部分提供额外的信息(如工具提示的标题….)
所以我们已经用声明式的方式来设置用户界面的行为,这就是为什么AngularJS似乎是一个很好的选择.
问题
既然我们已经有了定义服务器端的模型,并且由于AngularJS还使用模型,它不会强制我们重复代码吗?
我们如何处理数据绑定功能,因为我们已经做了一些绑定服务器端(在视图中).我们应该做一个完全异步的应用程序,从AngularJS调用AJAX来加载数据,还是可以混合使用?
在尝试使用这两种技术时,我们还应该注意什么?
我对Google做了一些研究,但是我找不到与Rangor观点和模板混合使用AngularJS的详细方式呢?也许这不是一件好事吗?
解决方法
大部分主要的MV * JavaScript框架,包括AngularJS,假定您将保持UI状态,并根据JavaScript模型或视图模型呈现用户界面.尝试混合在服务器端渲染中的功能并不会很好.
这并不是说MVC在开发Angular应用程序时没有用.您仍然可以利用一些很棒的功能,如ASP.NET Bundling and Minification.有时使用Razor视图或部分方式将JSON直接嵌入到页面中,而不是进行额外的AJAX调用.
对于模型,您可能需要查看Breeze.js.它是一个用于数据访问的JavaScript库,在服务器端的ASP.NET可以共享模型元数据.