Angularjs 如何使用ASP.Net MVC View.csthml作为角度视图而不是.html

Angularjs 如何使用ASP.Net MVC View.csthml作为角度视图而不是.html,angularjs,asp.net-mvc,asp.net-web-api,ng-view,Angularjs,Asp.net Mvc,Asp.net Web Api,Ng View,我试图使用Angulars$routeProvider将模板加载到my Views文件夹中.cshtml文件的容器中 我得到一个404,代码是: .when('#/second',{ urlTemplate:"Views/second.cshtml",controller:"MainController"}) Angular找不到第二个.cshtml文件。 为什么? 无法使用.cshtml文件吗?您不能直接提供.cshtml文件 如果没有服务器端逻辑,则

我试图使用Angulars$routeProvider将模板加载到my Views文件夹中.cshtml文件的容器中

我得到一个404,代码是:

.when('#/second',{ urlTemplate:"Views/second.cshtml",controller:"MainController"})
Angular找不到第二个.cshtml文件。 为什么?
无法使用.cshtml文件吗?

您不能直接提供
.cshtml
文件


如果没有服务器端逻辑,则需要将文件转换为
.html
文件,或者如果有逻辑,则需要使用标准MVC路由方式请求它:
/MyController/MyAction
为了向客户端提供.cshtml服务,您需要配置几个步骤

我创建了一个名为的示例项目

1) 创建App文件夹以承载角度脚本。你可以说出你想要的任何名字

2) 将.cshtml文件放入App/xxx/Components/文件夹中。确保属性设置为“内容”

我想把角度视图和组件(JavaScript文件)放在一起。原因是当项目变得更复杂时,它可以帮助我轻松地找到视图和相应的组件。因此,我没有将.js放在视图文件夹中,而是将.chtml文件放在App(Angular Script)文件夹中

1) 创建一个web.config,其中包含BlockViewHandler

<?xml version="1.0"?>

<configuration>
  <configSections>
  ...        
  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*.cshtml" verb="*" 
          preCondition="integratedMode" 
          type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
   ...
</configuration>
5) 配置路由

routes.MapRoute(
    name: "Components",
    url: "{feature}/components/{name}",
    defaults: new { controller = "Ng", action = "RenderComponents" });
信用


这是可能的。我们已经用.cshtml作为Angular的视图编写了一些Angular应用程序。您需要执行的步骤很少。现在让我写一个说明,然后在这里发布。我发布了我的。仅供参考:角度2就在取样器周围。您希望使用Angular 1.5的组件,以便可以轻松移植到Angular 2。这是可能的。请看我的。与使用.html文件相比,使用.cshtml文件有什么好处?JavaScript是一种动态语言,因此维护成本非常高。使用服务器端cshtml在某种程度上解决了这个问题;我可以创建强类型ASP.NETMVC帮助程序来呈现角度绑定和表达式。我喜欢你的助手;不幸的是,他停止了对他的贡献。我使用他的作为基础,并根据我的需要修改了很多。
routes.MapRoute(
    name: "Components",
    url: "{feature}/components/{name}",
    defaults: new { controller = "Ng", action = "RenderComponents" });