带有angularJS的ASP.NET无法加载模板(没有错误的空白页)

时间:2014-12-23 17:07:34

标签: javascript c# asp.net asp.net-mvc angularjs

我在ASP.NET应用程序内部路由有问题。当我在ASP.NET MVC之外移动我的angularJS时,它运行正常(在XAMPP上),但是当我在Visual Studio 2013中运行它时,我的索引页面是空白的。我真的不知道问题出在哪里......有人知道问题出在哪里吗?

以下是我正在使用的代码:

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 Home Controller:

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 }
            );
        }
    }

1 个答案:

答案 0 :(得分:2)

在客户端,您可以从诸如templates / {something} .html之类的网址加载模板。但在服务器端,您的路由配置为templates / {action} / {name}。如你所见,它没有.html后缀,还有一个部分:{name}。此外,您的行动中也没有名称参数。你真的需要它吗?我建议你在服务器端尝试模板/ {action} .html路由模板。