关于将.Net MVC 5项目迁移到Angular 2的方法的任何建议。这是一个大项目,我们不能只等待完整的过渡。当我们可以一次迁移几页并仍继续使用旧项目时,我们正在寻找并行移动。
我正在看到如何在MVC 5中使用Angular 2的解决方案,但我们不想在这里合并这些问题,因为我们在使用其他javascript框架时遇到了一些问题。
感谢您的帮助。
答案 0 :(得分:3)
在一段时间内,您的一些路由将由asp.net mvc服务器端处理,而某些路由将由ng2 app clientside处理。
首先,想象一下转换完成后您的应用会是什么样子:您将拥有一个启动应用的剃须刀cshtml视图。现在来创建这个视图,称之为“ngappview.cshtml”。它看起来像这样:
<!DOCTYPE html>
<html>
<head>
<base href="/">
<link href='~/assets/styles.bundle.min.css?v=5359476866832222' rel="stylesheet">
</head>
<body>
<app>
loading...
</app>
<script type='text/javascript' src='~/assets/main.bundle.min.js?v=5359476866832222'></script>
</body>
</html>
现在,在每次将特定页面转换为ng2应用程序视图时,服务器端只需提供您的ngappview.cshtml视图。这将是你的mvc控制器:
[Route("someRouteConvertedToNg2")]
public class SomeController: Controller {
public ActionResult ThisIsNowNg2Function() {
return View("~/Views/ngappview.cshtml");
}
}
在客户端,当您的ng2应用程序需要通过asp.net mvc调用仍在服务器端的托管路由时,您必须强制回发到该特定路由。请记住,对于每次回发,你都会失去你在ng2应用程序中维护的任何状态;并且ng2应用程序将为每个ng2视图重新加载(可能很烦人)。一段时间会有点混乱,但最终它会自行解决。
与此同时,这是一篇关于如何最好(在我看来)用asp.net mvc设置ng2项目的相关文章:https://stackoverflow.com/a/40234393/3532945