当前位置: 首页 > 面试题库 >

剃刀模板,视图和angular.js

江文斌
2023-03-14
问题内容

使用.NET Razor视图和AngularJS时的最佳做法是什么?

语境

我们正在使用带有剃须刀的mvc4 开发一个 公共网站
(而不是Intranet应用程序),并且我们对客户端脚本不是很熟悉,因此我们从知道的内容开始:jQuery。但是现在事情变得更加复杂了,我们想切换到AngularJS。

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

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

问题

既然我们已经在服务器端定义了模型,并且由于AngularJS也使用了模型,这是否会迫使我们复制代码

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

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

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


问题答案:

在使用MVC和另一个JavaScript框架(Knockout)时,我们已经处理了几个月的时间。最终,如果您要使用客户端MV
*框架来呈现用户界面,您会发现绝大部分放弃Razor都是您的最佳选择。

大多数主要的MV * JavaScript框架(包括AngularJS)都假定您将维护UI状态并根据JavaScript模型或视图模型呈现用户界面。尝试混入服务器端渲染只是效果不佳。

这并不是说MVC在开发Angular应用程序时没有用。您仍然可以利用ASP.NET
Bundling和Minification
等出色功能。有时使用Razor视图或部分视图将JSON直接嵌入页面中确实非常有效,这与进行额外的AJAX调用相反。

至于模型,您可能想看看Breeze.js。它是一个用于数据访问的JavaScript库,与服务器端的ASP.NET一起使用时可以很好地共享模型元数据。



 类似资料:
  • 问题内容: 我知道如何在_Layout.cshtml文件上设置.css文件,但是如何基于每个视图应用样式表呢? 我的想法是,在_Layout.cshtml中,您可以使用标签,但在一个非布局视图中却没有。哪里的标签去? 问题答案: 对于在整个站点中重用的CSS,我在以下部分中定义它们: 如果需要一些特定于视图的样式,可以在每个视图中定义该部分: 编辑:知道@RenderSection中的第二个参数f

  • 模板引擎适合于动态 HTML 页面输出或者代码生成,在Web开发中是常见的 装备。 Blade内置了简单的模板引擎,为了应付网页渲染和简单的数据传输。在日常开发中, 我们通常使用一些优秀的、高效的、功能较为完善的模板引擎,诸如 Velocity、Freemarker、JetbrickTemplate 等等。 Blade支持扩展任意一款模板引擎,同时也有多个实现了,在 这里,也欢迎你贡献代码。 默认

  • CabalPHP的模板引擎是 league/plates,相关语法请参考 plates 的文档。 获取模板引擎 要使用 plates 请先修改 usr/boot.php,取消 Boot 类中的 use Cabal\Core\Http\Server\HasPlates 注释: class Boot extends Cabal\Core\Application\Boot { //...

  • 使用C#MVC4 我的观点: 我的模特: 但是,我不断地得到错误: 当我尝试调试它时,它甚至没有进入方法或我的模型。

  • 我有Gammer模型,即用户扩展和竞争模型。很多用户可以参加一场比赛,而一场比赛可以有很多用户(很多) 插件管理。py: 管理员可以查看球员比赛(用户)或为他们分配能力 现在我希望玩家(用户)可以注册比赛(选择比赛)。我如何继续?

  • 本教程上接 教程 第2部分 。我们将继续 开发 Web-poll 应用并且专注在创建公共界面 – “视图 (views )”。 哲理 在 Django 应用程序中,视图是一“类”具有特定功能和模板的网页。 例如,在一个博客应用程序中,你可能会有以下视图: 博客首页 – 显示最新发表的博客。 博客详细页面 – 一篇博客的独立页面。 基于年份的归档页 – 显示给定年份中发表博客的所有月份。 基于月份的