首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AngularJS与ASP.NET MVC混淆

AngularJS与ASP.NET MVC混淆
EN

Stack Overflow用户
提问于 2016-11-25 08:12:41
回答 4查看 1.9K关注 0票数 4

请注意:我读过这样的问题,在堆栈溢出,但没有得到明确的概念,我想从这些答案。

我对为什么和如何使用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视图。

我的问题是:

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

回答 4

Stack Overflow用户

回答已采纳

发布于 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中非常简单。

代码语言:javascript
运行
复制
public class HomeController : Controller
{
    [Authorize] // Authorize the user.
    public ActionResult Index()
    {
        return View();
    }
}

如果您想使用和Web来实现这一点,您将允许用户访问HTML,而不是数据。有点不一样。使用MVC,您可以直接返回401

2.可以省略显示

假设您获得了一些只对某些用户可用的HTML。如果您使用角隐藏/显示HTML,它仍将对客户端可用。但是,如果您使用MVC,并且根本不呈现HTML,用户将无法使用它。

角度:

代码语言:javascript
运行
复制
<button type="submit" ng-hide="true" />

MVC:

代码语言:javascript
运行
复制
@if(someCondition)
{
    <button type="submit" ng-hide="true" />
}

在客户端上隐藏一些东西与完全不将信息提供给客户有很大的不同。

我使用MVC和角。我使用MVC来呈现视图。然后从Web中获取一些数据,然后显示特定于数据的内容。

票数 7
EN

Stack Overflow用户

发布于 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文件:

代码语言: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>
票数 2
EN

Stack Overflow用户

发布于 2016-11-25 08:45:27

从历史上看,MVC首先出现,然后才引入ASP.NET Web。

尽管如此,它是相同的技术,其周围的语法稍有不同,可以简化您的开发过程,以适应稍微不同的情况。

但是您可以使用它们中的任何一个创建API。

根据应用程序的不同,它并不总是一个单一的页面应用程序,只有api提供的数据。您可能有许多不同的页面,其中一部分是在服务器上呈现的,一部分是动态的,从api或mix和match加载数据。

目前,.net有三个主要分支:

  • ASP.NET网络表单
  • ASP.NET MVC (API)
  • ASP.NET芯

选择API为某些客户端开发常规的单页应用程序或api。如果您需要定制API端点或对构造视图/部件视图/模板进行更多的控制,或者需要更多的页面,请选择MVC。

注意:当我谈到单页应用程序时,我指的是您导航到起始页面一次的应用程序,并且所有路由和视图部分都在后台加载,而不需要重新加载整个页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40800381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档