如何将AngularJS作为前端框架和ASP.NET MVC一起用作后端框架?

时间:2015-05-02 08:10:39

标签: javascript html asp.net-mvc angularjs

我已按如下方式构建了一个项目:

asp.net mvc 作为后端框架

angularjs 作为前端框架

但我认为该项目不是可读且标准,例如asp.net mvc有 路由 来管理网址和angularjs在客户端有另一种技术(它在url(s)的末尾使用#)。

通常一起使用angularjs和asp.net mvc吗?

使用angularjs选择Node.js这样的后端技术是否有任何限制?

你能给我发一个示例代码,显示asp.net mvc和angularjs一起工作吗?

我知道asp.net mvc有很多功能,如客户端(html),如 html.helpers 等,我知道angularjs在客户端(html)有很多功能,如表达式({{Property}})绑定(ng-bind)等。

我很困惑。

如何将两个框架的功能匹配在一起。

3 个答案:

答案 0 :(得分:3)

我们上一个Web项目在客户端使用Angular,在后端使用MVC。

我们使用MVC进行路由,但使用位置服务器进行web参数。所以网址看起来像

http://site/Customer/Edit/#12345(12345是id) http://site/Customer/List(返回客户列表)

在控制器中,我们有这样的代码来填充数据

innerHttp = $http.get("Data" + $location.path());
innerHttp.success(function (innerResponse) {
    console.log("Form Data Loaded");
    $scope.entity = innerResponse.data || {};
}).error(function (data, status, headers, config) {
    $scope.addAlert('danger', 'Error loading form data (' + status.toString() + ')');
});

请注意我们如何从位置服务获取ID。

我们的控件有一个View来返回HTML表单和一个返回Data的View,这个看起来像

[Route("{type}/data/{id}")]
public ActionResult Data(string type, Guid id)
{
    return new JsonNetResult()
    {
        Formatting = Formatting.Indented,
        Data = DataBuilder.ReadData(type,id) 
    };
}

这种方法不会给你一个页面应用程序,但它仍然将页面与数据分开,并允许客户端缓存html,只需要json调用是新鲜的,所以保持带宽下降并让你进入角度时间。

希望这会对你有所帮助。

答案 1 :(得分:3)

理想情况下,您应该使用ASP.Net WebAPI作为休息服务后端。对于前端UI,您将使用Angularjs本身,除了WebAPI JSON over Rest服务之外,不依赖于ASP.Net。

您最终不会使用ASP.Net MVC提供的很多东西,但是您可以清楚地分离后端服务层和前端UI。

这将消除在ASP.Net MVC和AngularJS中需要复制功能的可能性。

答案 2 :(得分:1)

从根本上说,ASP.NET MVC和AngularJS提供了许多相同的服务,但是在堆栈的不同层执行。如果您正在构建一个在客户端上很重的单页Web应用程序,那么您最终将无法使用ASP.NET MVC的大部分功能,除非可能是一个中间层你的数据。如果您更喜欢以服务器为中心的方法,而实际导航到每个页面上的不同服务器网址,那么您在应用中就不会获得尽可能多的Angular。

尽管如此,我现在正在构建一个同时使用ASP.NET MVC和AngularJS的新Web应用程序,而我的是一个单页Web应用程序,它对客户端代码很重要。我不认为这种方法有什么问题,但从某种意义上说,我认为可以说ASP.NET MVC对于这种设计来说有点过分。也许这是人们倾向于Node.js的原因之一。