AngularJS与ASP.NET MVC-Confused

Tan*_*jel 4 c# asp.net asp.net-mvc asp.net-web-api angularjs

请注意:我在Stack Overflow中已经阅读了类似的一些问题,但是没有从这些答案中得到我想要的清晰概念.

我清楚地了解为什么以及如何将AngularJS与ASP.NET Web API一起使用.但我对使用AngularJS和ASP.NET MVC感到困惑!

在使用ASP.NET Web API的AngularJS的情况下:

Web API控制器方法返回数据,AngularJS调用Web API控制器方法并捕获数据,然后在View中呈现数据.这非常符合逻辑!

在使用ASP.NET MVC的AngularJS的情况下:

ASP.NET MVC Controller方法本身返回带有数据的View/View.那么AngularJS与ASP.NET MVC有什么用?

尽管如此,如果我想在ASP.NET MVC中使用AngularJS,那么我必须从ASP.NET MVC控制器方法返回JSON而不是MVC视图.

我的问题是:

  1. 为了将AngularJS与ASP.NET MVC一起使用,从ASP.NET MVC控制器方法返回JSON而不是MVC视图是否合乎逻辑?如果我这样做,有什么好处吗?
  2. AngularJS与ASP.NET MVC的实际用途是什么?或者我在哪里可以将AngularJS与ASP.NET MVC一起使用?

smo*_*nes 7

为了将AngularJS与ASP.NET MVC一起使用,从ASP.NET MVC控制器方法返回JSON而不是MVC视图是否合乎逻辑?如果我这样做,有什么好处吗?

我会说你可以.但是,如果您只想返回数据,那么ASP.NET Web API就是您的最佳选择.并且在下一个问题中回答了这些好处......

AngularJS与ASP.NET MVC的实际用途是什么?或者我在哪里可以将AngularJS与ASP.NET MVC一起使用?

首先,您使用的是什么而不是MVC?其他一些服务器端渲染?在这个答案中,我假设你有简单的html文件.MVC仍然可以与Angular一起使用.这里有几个场景:

1.假设您想限制对特定页面/路线的访问.它在MVC中非常简单.

public class HomeController : Controller
{
    [Authorize] // Authorize the user.
    public ActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想使用Angular和Web API执行此操作,您将授予用户访问HTML的权限,但不能访问数据.这有点不同.使用MVC,您可以401直接返回.

2.您可以省略显示HTML.

假设您有一些HTML应该可供某些用户使用.如果您使用Angular隐藏/显示HTML,它仍然可供客户端使用.但是如果您使用MVC并且根本不渲染HTML,那么用户将无法使用它.

角度:

<button type="submit" ng-hide="true" />
Run Code Online (Sandbox Code Playgroud)

MVC:

@if(someCondition)
{
    <button type="submit" ng-hide="true" />
}
Run Code Online (Sandbox Code Playgroud)

在客户端上隐藏某些内容并且根本不向客户端提供信息存在很大差异.

我将MVC与Angular一起使用.我使用MVC来渲染视图.然后我让Angular从Web API获取一些数据,然后显示特定于数据的内容.