2014-12-22 3 views
3

Я переместил приложение angularJS из xampp в ASP.NET Visual Studio. Когда я загружаю свое приложение, я получил сообщение об ошибке, что файлы шаблонов не найдены.ASP.NET с angularJS не удается загрузить шаблон

Я пробовал несколько методов, но никто из них не работал ... Кто-нибудь знает, где проблема?

Скриншот иерархии файла:

enter image description here

здесь JS код, который включает в себя шаблоны:

app.config(function ($routeProvider) { 
    $routeProvider 
     .when('/contacts', 
      { 
       controller: 'ContactsController', 
       templateUrl: '"/home/contacts.html' 
      }) 
     .when('/add-contact', 
      { 
       controller: 'ContactAddController', 
       templateUrl: '/home/addContact.html' 
      }) 
     .when('/edit-contact/:contactId', 
      { 
       controller: 'ContactEditController', 
       templateUrl: '/home/editContact.html' 
      }) 
     .when('/display-contact/:contactId', 
      { 
       controller: 'ContactDetailsController', 
       templateUrl: '/home/displayContact.html' 
      }) 
     .otherwise({ redirectTo: '/contacts' }); 
}); 

Вот RouteConfig.cs (я оставляю его, как это было, когда я создал новый проект)

public class RouteConfig 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 
+0

Как выглядит ваш контроллер? По предположению, я бы предположил, что .html не требуется. –

+0

@DaveWalker какой контроллер вы хотите знать? Контроллер ASP.NET пуст, и это javascript-контроллер для angularJS – jureispro

+0

Я думаю, что templateUrl должен быть /Views/home/contacts.html –

ответ

5

Если вы используете маршрутизацию по умолчанию m echanism ASP.NET (MVCx?) и спросить, что приложение для URL, например '/ home /contacts.html' ASP.NET будет искать файл с именем Home Controller.cs, в котором он будет искать действие называется «contacts.html».

Поскольку шаблон по умолчанию - {controller}/{action}/{id}.

Покажите нам свой маршрут RouteConfig.cs. Вам может потребоваться правило, чтобы обойти маршрутизацию ASP и обслуживать представления как статические файлы, чтобы заставить его работать для углового.

Я думаю, что папка просмотра имеет специальную функцию в MVC и не может использоваться для обслуживания статических файлов. Поместите файлы .html в другой тип статического каталога и попробуйте оттуда.

Edit:

Если вы хотите пойти СП способ просто поместить свои взгляды HTML внутри отдельной папки (например: angularviews) в корневой папке проекта ASP и настроить RouteConfig.cs как это:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     //exclude template folder from routing 
     routes.IgnoreRoute("angularviews/{*pathInfo}"); 

     //add routes for api calls and stuff you need mapped to an asp controller here 
     /* 
     ... 
     */ 

     //always deliver the main template for all requests 
     routes.MapRoute(
      name: "SPA", 
      url: "{*catchall}", 
      defaults: new { controller = "Home", action = "Index" } 
     ); 

     /* 
     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
     */ 
    } 
} 

Тогда загрузите ваше мнение как 'angularviews/view1.html'

+0

Спасибо за ответ. Я отредактировал свой пост с запрошенным вами номером. – jureispro

+0

Отредактировал свой ответ с помощью скорректированного RouteConfig, чтобы вы начали. – jingel

+0

У меня есть дополнительный код, но проблема все еще там. define routes.MapRoute() для каждого .html шаблона? – jureispro

Смежные вопросы