Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度UI路由器模板URL的状态是-.HTML还是.CSHTML?_Javascript_Angularjs_Asp.net Mvc_Model View Controller_Angular Ui Router - Fatal编程技术网

Javascript 角度UI路由器模板URL的状态是-.HTML还是.CSHTML?

Javascript 角度UI路由器模板URL的状态是-.HTML还是.CSHTML?,javascript,angularjs,asp.net-mvc,model-view-controller,angular-ui-router,Javascript,Angularjs,Asp.net Mvc,Model View Controller,Angular Ui Router,我想知道哪种方法更适合在ASP.NET MVC中内置的应用程序中保留Angular UI Router($stateProvider)中的部分HTML 这种方法(对应于MVC中的RAZOR视图) 或者这种方法: .state('login', { url: '/login', templateUrl: 'App/Partials/Login.html' // corresponds to an html file inside App folder (where Angular

我想知道哪种方法更适合在ASP.NET MVC中内置的应用程序中保留Angular UI Router($stateProvider)中的部分HTML

这种方法(对应于MVC中的RAZOR视图)

或者这种方法:

.state('login', {
    url: '/login',
    templateUrl: 'App/Partials/Login.html' // corresponds to an html file inside App folder (where Angular module and controllers are)
})

两种方法的优缺点是什么?(或者不管是什么?

我认为这是你的最终目标的问题

如果您需要使用MVC来参与呈现模板,那么我相信您可以使用针对MVC路由的选项。这里的优点是,您可以在angularJS接管之前在服务器端渲染视图。如果您想隐藏部分源代码,这可能很重要。这还意味着您可以继续使用ASP.NET呈现的html,这在迁移旧解决方案时可能很重要。使用ASP.NET MVC中的模型数据可能会有点混乱,如果您想在客户端AngularJS代码中使用这些数据,可能需要引导这些数据。您需要记住在js脚本中以@Html.Raw(model)的形式访问任何MVC模型。我个人认为这使得实现更加混乱

如果您根本不需要MVC渲染,并且愿意一直使用AngularJS,那么您可以忽略MVC路由,并像在第二个示例中所做的那样以模板HTML文件为目标。如果您不需要MVC渲染,我建议您这样做,这样您就可以充分利用AngularJS,而不用担心将其与MVC弄糟。这就是我使用的解决方案。我仍然使用ASP.NETMVC路由,但纯粹是为了WebAPI调用,而不是任何模板访问。MVCless方法的一个问题是,你的主页总是出现在URL中(例如),但是你可以通过IIS中的重写规则来解决这个问题(就像我对我的应用程序所做的那样)。此外,您不会有来自MVC的模型,但可以使用AngularJS$http和/或$resource对WebAPI服务层进行异步调用

.state('login', {
    url: '/login',
    templateUrl: 'App/Partials/Login.html' // corresponds to an html file inside App folder (where Angular module and controllers are)
})