Angular路由模板URL是否支持ASP.Net MVC 5项目中的* .cshtml文件?

我正在研究MVC 5项目。 当我在我的视图中使用html页面时,它会加载该页面,但是当我使用.cshtml页面时,它不会加载视图。 出现空白页面。

$urlRouterProvider .otherwise('/app/dashboard'); $stateProvider .state('app', { abstract: true, url: '/app', templateUrl: 'tpl/app.html' }) .state('app.dashboard', { url: '/dashboard', templateUrl: 'tpl/app_dashboard.html' }) 

请指导我如何使用cshtml文件或最佳方法。

是的你可以。

为Yasser添加类似的答案,但使用ngRoute:

1)您需要将Controller / Action引用到ASP.NET MVC应用程序,而不是引用部分HTML。

 .when('/order', { templateUrl: '/Order/Create', controller: 'ngOrderController' // Angular Controller }) 

2)您的ASP.NET MVC将返回.cshtml视图:

 public class OrderController : Controller { public ActionResult Create() { var model = new MyModel(); model.Test= "xyz"; return View("MyView", model); } } 

3)你的MyView.cshtml将混合Razor和Angular。 注意:作为Angular应用程序的一部分,请将布局设置为null。

 @model MyProject.MyModel @{ Layout = null; } 

{{ Test }}

Model.Test

你不能。

您不能在角度路线的模板url中使用.cshtml文件的路径。 你能在浏览器中打开.cshtml文件吗? 没有权利 ? 这同样适用于此。

解决方法:

.cshtml文件包含服务器端代码,要呈现它,您需要使用控制器和操作。 他们将为您呈现.cshtml文件。 因此,让控制器操作为您返回该视图,并将URL用于角度路径中的控制器操作。

例如:

 state('app.dashboard', { url: '/dashboard', templateUrl: '/dashboard/index' }) 

 public class DashboardController : Controller { public ActionResult Index() { return View(); } } 

ps:尝试过,这对我有用

你不能混合angularJs和Razor视图,razor加载到服务器中,角度运行在客户端它使用浏览器中运行的javascript来呈现视图,这就是为什么人们倾向于在你的情况下使用rest api作为后端因为您使用.net,它可能是Web API或服务堆栈。

你可以做的是执行剃刀视图作为主“索引页面”,但从那里让angularjs处理“内部”页面的路由。

请记住,angular是基于单页面应用程序的构思构建的,这是asp.net mvc架构的不同视角。

cshtml本质上是带有razor语法的内联csharp代码,并且渲染到服务器站点上的html,因此你不能在角度路由中使用,因为浏览器不能识别c#