Asp.net mvc 使用AngularJS/.NET不作为SPA
这个问题可能不是很具体,但我想知道如何使用AngularJS+ASP.NETMVC创建一个不是真正的SPA应用程序 我即将开始AngularJS与前端非常匹配的项目:前端将有很多动态计算和情况,这些都得益于AngularJS的双向绑定模型 然而,我热衷于尽可能地在服务器端预加载和呈现页面,以减少一些不必要的AJAX请求。例如,对于这个应用程序来说,像传统的MVC应用程序一样在ViewBag中实际获取并存储页面加载数据比将其强制存储到SPA中更有意义。当然,也有一些场景仍然会使用AJAX,这对于Angular来说是完美的 我感兴趣的事物,例如:Asp.net mvc 使用AngularJS/.NET不作为SPA,asp.net-mvc,angularjs,Asp.net Mvc,Angularjs,这个问题可能不是很具体,但我想知道如何使用AngularJS+ASP.NETMVC创建一个不是真正的SPA应用程序 我即将开始AngularJS与前端非常匹配的项目:前端将有很多动态计算和情况,这些都得益于AngularJS的双向绑定模型 然而,我热衷于尽可能地在服务器端预加载和呈现页面,以减少一些不必要的AJAX请求。例如,对于这个应用程序来说,像传统的MVC应用程序一样在ViewBag中实际获取并存储页面加载数据比将其强制存储到SPA中更有意义。当然,也有一些场景仍然会使用AJAX,这对于A
- 如何从ViewBag集合初始化角度模型
- 这种方法还有其他选择吗(我想,Angular仍然是一个有效的选择吗)
- 你有没有看过这方面的论文/教程李>
public class PartialsController : Controller
{
[Route("Partials/{view}")]
[Route("Partials/{view}/{sub?}")]
public ActionResult Index(string view, string sub)
{
var partial = sub != null ? view + "/" + sub : view;
try
{
return View(partial);
}
catch (Exception)
{
return HttpNotFound();
}
}
}
在这里,我生成了一个庞大的表,所以我使用Razor“预绑定”模型并生成行,而不是使用ng repeat
@ {
Layout = null;
var project = new SomeController.GetCurrentProject();
var keys = project.GetType().GetProperties().OrderBy(x => x.Name);
}
<!-- Quick'n'dirty table view -->
<table class="table table-responsive project-name-table">
<tr>@{ foreach (var key in keys)
{
<th ng-if="visibleFilter.@key.Name">
<a ng-click="order.on='@key.Name';order.reverse=!order.reverse">@key.Name</a>
</th>
}
}
</table>
@{
布局=空;
var project=new SomeController.GetCurrentProject();
var keys=project.GetType().GetProperties().OrderBy(x=>x.Name);
}
@{foreach(键中的var键)
{
@键。名称
}
}
我的答案将集中在:
这种方法还有其他选择吗(我想,Angular仍然是一个有效的选择吗)
我不会说不要使用AngularJS,但是我会说,如果您真正想要利用的只是双向数据绑定,那么不要使用SPA框架
为什么?
要么选择温泉,要么不选择。拉入SPA框架可能会让您超时构建所述框架的越来越多的功能,最终导致应用程序的方法不一致
还可以认为Angular及其所有特性可能会使双向数据绑定模式过于复杂
备选方案
选择一个双向数据绑定库,在我看来,与ASP.NET MVC很好的匹配是令人失望的,因为它有很多支持(例如ASP.NET MVC Helpers等)
请参阅:
(用于淘汰赛的ASP.NET MVC扩展)
前进
此时,选择使用数据绑定库而不是SPA框架不会限制您将来迁移到SPA体系结构(大多数库与其他库兼容,这些库组合后可以为您提供SPA体系结构),然而,当这一点到来时,你可以大规模地采取这一行动。谢谢你的回答,kmvc肯定+1-看起来很有趣。这是一个有趣的方法-我将做一个小测试,看看这个预绑定的实际效果。