MVC在正常页面加载时渲染Razor模板,但在Angular ngRoute将其作为templateUrl获取时不会

时间:2017-01-14 00:20:35

标签: angularjs asp.net-mvc razor ngroute

我正在使用一些第三方库,它使用razor语法来呈现用于客户端的gui'小部件'。看来这个库创建了一些div和javascript然后发送到客户端。但是,在尝试将其与Angular集成时会出现一些问题。如果我创建一个传统的MVC布局,在该布局中调用然后渲染视图的控制器,它会渲染得很好:

~/Views/MyEditor/MyPage.cshtml: (
@model ...
<div class="col-md-7">
   @Html.{3RDPARtY}.Editor()
   .Render()
</div>

此页面上的其他html元素由ng标签修饰,并且可用作Angular 1.x ng-route的模板。

角度路由控制器中的

......

$routeProvider.when('/MyEditor' {
    templateUrl: "~/Views/MyEditor/MyPage.cshtml"
    controller: "..."
}

在这种情况下,当Angular路由加载此路由时,页面将返回所有角度标记完整并且作为角度应用程序正常运行。但是,我们发现第三方已加载,并且未呈现它要生成的html和脚本。

如果我们将@ Html.3rdParty.Render()移动到主Index.cshtml,也就是默认情况下没有任何Angular路由的那个,那么渲染和运行正常。只有当角度路由器向该cshtml文件发出请求时,它才会被废弃。当路由器调用文件时,有没有办法让它正确渲染剃刀?

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

如果我正确阅读上面的代码并理解您的问题:

  • 您在客户端脚本的路径中使用了波浪号~ - 波浪号~仅适用于razor(服务器端呈现)

  • 此外,应该直接调用视图的controller cshtml文件。

除非您在 MVC 应用程序中使用web.config设置,否则无法直接调用(cs/vb) html个文件(默认情况下受限制)。

  • 默认限制设置<add key="webpages:Enabled" value="false"/>
  • Asp.Net WebPages(一个使用Razor视图的轻量级Asp.Net网站)中,已启用true),您可以直接调用它们

H个。