请注意:我读过这样的问题,在堆栈溢出,但没有得到明确的概念,我想从这些答案。
我对为什么和如何使用AngularJS与ASP.NET Web有非常清晰的概念。但我对AngularJS与ASP.NET MVC的使用感到困惑!
在使用AngularJS的情况下ASP.NET Web:
Web控制器方法返回数据,AngularJS调用Web控制器方法并捕获数据,然后在视图中呈现数据。这很符合逻辑!
在AngularJS中的ASP.NET MVC:
ASP.NET MVC控制器方法本身与数据返回视图/视图。那么,AngularJS与ASP.NET MVC有什么关系呢?
尽管如此,如果我想将AngularJS与ASP.NET MVC结合使用,则必须从ASP.NET MVC控制器方法中返回JSON视图而不是MVC视图。
我的问题是:
发布于 2016-11-25 08:52:35
从ASP.NET MVC控制器方法返回JSON而不是MVC视图是否合乎逻辑,以便使用AngularJS和ASP.NET MVC?如果我这样做了,是否有任何好处?
我会说你可以。但是,如果您只想返回数据,那么ASP.NET Web确实是可行的。好处在你的下一个问题中得到解答..。
什么是实际使用AngularJS与ASP.NET MVC?或者我可以在哪里使用AngularJS和ASP.NET MVC?
首先,你用什么代替MVC?其他服务器端渲染?在这个答案中,我假设你有普通的html文件。MVC仍然可以与角一起使用。以下是几种场景:
1.,假设您希望限制对特定页面/路由的访问。它在MVC中非常简单。
public class HomeController : Controller
{
[Authorize] // Authorize the user.
public ActionResult Index()
{
return View();
}
}
如果您想使用和Web来实现这一点,您将允许用户访问HTML,而不是数据。有点不一样。使用MVC,您可以直接返回401
。
2.可以省略显示。
假设您获得了一些只对某些用户可用的HTML。如果您使用角隐藏/显示HTML,它仍将对客户端可用。但是,如果您使用MVC,并且根本不呈现HTML,用户将无法使用它。
角度:
<button type="submit" ng-hide="true" />
MVC:
@if(someCondition)
{
<button type="submit" ng-hide="true" />
}
在客户端上隐藏一些东西与完全不将信息提供给客户有很大的不同。
我使用MVC和角。我使用MVC来呈现视图。然后从Web中获取一些数据,然后显示特定于数据的内容。
发布于 2016-11-25 08:56:14
从ASP.NET MVC控制器方法中返回JSON而不是MVC视图是否符合逻辑?如果我这样做了,有什么好处吗?
不,JSON是一种更专注和更合适的技术,可以将ASP.NET返回到浏览器。
AngularJS与ASP.NET MVC的实际使用是什么?或者我可以在哪里使用AngularJS和ASP.NET MVC??
提供动态服务器生成的主页作为SPA应用程序的入口点。
您还可以提供动态服务器生成的模板,以供角应用程序使用。您可以为日志用户自定义页面,也可以将一些数据注入其中。
如果每个页面都是相同的,则不需要在服务器端动态生成它,只需使用静态的html页面即可。
这里有一个主页示例,其中将当前用户名公开为App.currentUser,并根据浏览器的区域性加载适当的i18n javascript文件:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
@if (User.Identity.IsAuthenticated)
{
<script type="text/javascript">
var MyApp = MyApp || {}
MyApp.currentUser = '@User.Identity.Name.Replace("\\","\\\\")';
</script>
}
</head>
<body ng-app="my-app">
<div ng-view>
<h1>Welcome to MyApp</h1>
<p>Loading...</p>
</div>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-i18n/1.5.8/angular-locale_@(Culture.ToLower()).min.js"></script>
<script type="text/javascript" src="scripts/app.js"></script>
</body>
</html>
发布于 2016-11-25 08:45:27
从历史上看,MVC首先出现,然后才引入ASP.NET Web。
尽管如此,它是相同的技术,其周围的语法稍有不同,可以简化您的开发过程,以适应稍微不同的情况。
但是您可以使用它们中的任何一个创建API。
根据应用程序的不同,它并不总是一个单一的页面应用程序,只有api提供的数据。您可能有许多不同的页面,其中一部分是在服务器上呈现的,一部分是动态的,从api或mix和match加载数据。
目前,.net有三个主要分支:
选择API为某些客户端开发常规的单页应用程序或api。如果您需要定制API端点或对构造视图/部件视图/模板进行更多的控制,或者需要更多的页面,请选择MVC。
注意:当我谈到单页应用程序时,我指的是您导航到起始页面一次的应用程序,并且所有路由和视图部分都在后台加载,而不需要重新加载整个页面。
https://stackoverflow.com/questions/40800381
复制相似问题