【问题标题】:ASP.NET with angularJS fails to load template (Blank page with no error)带有 angularJS 的 ASP.NET 无法加载模板(没有错误的空白页面)
【发布时间】:2014-12-23 17:07:34
【问题描述】:

我在 ASP.NET 应用程序中遇到路由问题。当我将我的 angularJS 移到 ASP.NET MVC 之外时,它工作正常(在 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 主控制器:

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

【问题讨论】:

  • 你如何部署你的应用程序?您是否从 IIS Express 运行它?它有什么网址?您还需要在 Angular 和 ASP .Net 中同步路由配置。
  • 我在 ASP.NET Visual Studio 2013 附带的默认 IIS 服务器上运行它。我不知道问题出在哪里。如何将路由配置与 angular 和 asp.net 同步? @oryol

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


【解决方案1】:

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

【讨论】:

  • 你的建议对我很有效。感谢您的帮助
猜你喜欢
  • 2015-02-21
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
相关资源
最近更新 更多