【问题标题】:Angular UI-Router templateUrls in state - .HTML or .CSHTML?Angular UI-Router templateUrls 处于状态 - .HTML 还是 .CSHTML?
【发布时间】:2016-09-23 03:42:56
【问题描述】:

我想知道在 ASP.NET MVC 中构建的应用程序中,将部分 HTML 保留在 Angular UI-Router ($stateProvider) 中的更好方法

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

.state('login', {
    url: '/login',
    templateUrl: '/Account/Login' // corresponds to an MVC partial route
})

或者这种方法:

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

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

【问题讨论】:

    标签: javascript angularjs asp.net-mvc model-view-controller angular-ui-router


    【解决方案1】:

    我认为这取决于你的最终目标是什么。

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多