gpt4 book ai didi

angularjs - AngularJS 必须为 ASP.NET MVC 项目提供什么?

转载 作者:行者123 更新时间:2023-12-04 06:41:39 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

6年前关闭。




Improve this question




我听说过很多关于 AngularJS 在与服务器通信方面比 jQuery 好得多的消息。
但我发现的只是用纯粹的客户端 javascript 文件替换 C# Controller 和 cshtml View 。我对此没有兴趣。
有什么我想念的吗?
我目前正在使用 jQuery Ajax 通过 JSON 在客户端和服务器之间进行通信。我期待着为此目的找到更好的解决方案。

最佳答案

一旦 Controller 返回一个 View ,发送到浏览器的就是纯 HTML。 Razor 在服务器端呈现为 HTML。或者您的操作可以返回纯 JSON。

因此,无论您想使用 jquery、angularjs 还是任何其他基于 JS/HTML 的库,MVC 都没有任何限制。 从客户端代码的 Angular 来看, Controller 操作只是返回 HTML 或 JSON 的 URL。

此外,返回 JSON 或 WebAPI Controller 的 MVC Controller 操作是您的 AngularJS 与之交互的完美 RESTful 端点。如果您需要 HTML 片段来刷新页面的动态区域,则返回部分 View 的 Controller 操作将作为 HTML 片段传给客户端。因此,您通过 Angular 的交互式请求仍然可以利用您的 Controller /业务/数据层的后端架构。

Angular 为 MVC 提供了什么

AngularJS 提供了一个 MVC 应用程序,就像它提供任何 Web 应用程序一样。这是一种从这些元素与后端的交互性中抽象出 UI 元素表示的好方法。使用 jquery 的常见方法的问题是您通过选择器(例如 $('.someClass').on(...)对与特定 HTML 元素的交互使用react。然后在处理程序中从元素中收集有关单击内容的信息并在 ajax 请求中提交,然后获取响应并更新特定元素 $('.areaToUpdate ).html(响应)`。

所以你有三个问题没有正确分开:

  • 什么元素响应交互(按钮单击、下拉更改、项目拖放)
  • 与服务器交互以编译请求、提交请求并解析响应。
  • 根据服务器的响应更新 UI

  • 通常,由于我们试图使此代码不那么脆弱的方式,您被限制在对象的逻辑层次结构中,该层次结构也与您的 UI 的 HTML 元素层次结构相匹配。长话短说,缺乏适当的关注点分离意味着更改任何一个都会影响具有多种用途的代码块,因此更改更具挑战性,因为由于缺乏解耦而施加了某些限制。

    AngularJS 通过使用客户端模型作为这些关注点之间的中介来提供这些关注点的客户端分离。 UI 交互更新模型,其他代码响应模型的更改并发出服务器请求以更新模型作为响应,而其他代码可以响应这些更改并更新 UI 以响应模型更改。您可以自由地修改 UI 的结构,并且可以更新更小的代码集以完成 UI 更改。

    AngularJS 是从 MVC 模式建模的事实使它看起来好像与 ASP.NET MVC 互斥。但是,它们有两个不同的目的。 ASP.NET MVC 为服务器端数据查询、服务器端模型填充和服务器端 HTML 呈现提供了关注点分离。它还提供了一种很好的方式来支持客户端交互框架可能利用的 JSON 或 HTML 片段(部分 View )的呈现。 AngularJS 提供了一个模型,适合为高度交互的页面编写干净的客户端代码。

    就个人而言,我认为它们非常互补。

    尝试用 jquery+ASP.NET MVC 做高度交互的页面是可行的,而且效率很高,但是 AngularJS 为客户端代码的可维护性增加了很多。 ASP.NET MVC 为您的服务器端逻辑提供了一个很好的框架。此外,如果您有适合更传统 PRG 模式的简单页面或只是呈现 HTML 内容,那么 ASP.NET MVC 为您提供了一种快速实现这些页面的有效方法,而无需使用 Angular 所需的不必要的样板代码。换句话说,您可以选择只在真正受益的页面上使用 AngularJS。

    关于angularjs - AngularJS 必须为 ASP.NET MVC 项目提供什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319880/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com