我已按如下方式构建了一个项目:
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)等。
我很困惑。
如何将两个框架的功能匹配在一起。
答案 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的原因之一。