2014-12-23 30 views
1

我在ASP.NET应用程序内部路由时遇到了问题。当我将我的angularJS移到ASP.NET MVC之外时,它工作正常(在XAMPP上),但是当我在Visual Studio 2013中运行它时,我的索引页是空白的。我真的不知道问题在哪里......有人知道问题在哪里吗?带angularJS的ASP.NET无法加载模板(空白页面没有错误)

这里是我使用的代码:

angularJS路由脚本:

var app = angular.module('contactsManager', ['ngRoute']); 
app.config(function ($routeProvider) { 
    $routeProvider 
     .when('/contacts', 
      { 
       controller: 'ContactsController', 
       templateUrl: 'templates/contacts.html' 
      }) 
     .when('/add-contact', 
      { 
       controller: 'ContactAddController', 
       templateUrl: 'templates/addContact.html' 
      }) 
     .when('/edit-contact/:contactId', 
      { 
       controller: 'ContactEditController', 
       templateUrl: 'templates/editContact.html' 
      }) 
     .when('/display-contact/:contactId', 
      { 
       controller: 'ContactDetailsController', 
       templateUrl: 'templates/displayContact.html' 
      }) 
     .otherwise({ redirectTo: 'templates/contacts' }); 
}); 

ASP.NET家庭控制器:

public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 

     public ActionResult Templates() 
     { 
      return PartialView(); 

     } 

     public ActionResult Contact() 
     { 
      ViewBag.Message = "Your contact page."; 

      return View(); 
     } 
    } 

ASP.NET路由配置:

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

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

你如何部署你的应用程序?你从IIS Express运行它吗?它有什么网址?您还需要在角度和ASP .Net中同步路由配置。 – oryol

+0

我在ASP.NET Visual Studio 2013附带的默认IIS服务器上运行它。我不知道问题在哪里。如何将路由配置与angular和asp.net同步? @oryol – jureispro

回答

2

在客户端sid上如果您从模板/ {something} .html等url加载模板。但在服务器端,您的路由配置为模板/ {action}/{name}。如你所见,它没有.html后缀,并且还有一个部分:{name}。您的行为中也没有名称参数。你真的需要它吗?我建议你在服务器端尝试使用templates/{action} .html路由模板。

+0

你的建议对我很好。谢谢你的帮助 – jureispro