asp.net-mvc - 带有书签的 Angular SPA URL 的 ASP.NET MVC 4 路由

标签 asp.net-mvc angularjs asp.net-mvc-routing

我正在尝试在 AngularJS 中构建一个单页应用程序,并在 HTML5 模式下完成客户端路由。如果用户曾经在我的网站上为某个页面添加书签,我知道我需要一个基本的服务器端路由方案,但我真的希望它始终提供我的单个主页并将相同的 URL 传播到客户端路由部分。

这个包罗万象的路由非常适用于只有一层的简单 URL:

routes.MapRoute(
    "Default", // Route name
    "{*catchall}", // URL with parameters
    new { controller = "Home", action = "Index" } // Parameter defaults
);

示例网址:
http://myapp.com/moreInfo
http://myapp.com/contactUs

“moreInfo”和“contactUs”只是 Angular 中的命名路由。单页应用程序的唯一真正入口点是 http://myapp.com .到目前为止,这一切都非常顺利。

但是,当我尝试走多条路线时,应用程序进入无限循环:
http://myapp.com/user/5

这是因为我的服务器端路由不足以将“user/5”URL“传递”到我的客户端应用程序吗?我是否需要做任何特别的事情来确保无论 URL 嵌套多深,它都能正确传递到我的 SPA?

最佳答案

问题不在于路由配置,我对 angular js 和 mvc 4 有类似的设置,下面的路由工作正常。

routes.MapRoute(
  name: "Application",
  url: "{*url}",
  defaults: new { controller = "Home", action = "Index" },
  namespaces: new[] { "MyApp.Web.Controllers" });

您是否在 angular 配置方法中将 html5Mode 设置为 true?
$locationProvider.html5Mode(true);

您可能会尝试使用 fiddler 向您的应用发送 get 请求并查看响应。如果它是 301 或 302,那么您有服务器端重定向循环问题。如果它是 200,那么你的 angular/js 代码可能是问题所在。

关于asp.net-mvc - 带有书签的 Angular SPA URL 的 ASP.NET MVC 4 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19142940/

相关文章:

node.js - 如何定义 GruntJS 服务的内容?

angularjs - Angular ng-重复日期格式

c# - MVC 不路由到我的 Controller 的操作结果之一?

asp.net-mvc - JqueryMobile 复选框不喜欢 "data-inline"

javascript - 为什么我的 TextBoxFor 不能正确显示货币值?

javascript - 仅使用对该对象的引用替换数组中的对象

asp.net - 如何支持两种 URL

c# - 如何在 ASP.NET MVC 4 区域中正确使用 Html.ActionLink

asp.net-mvc - 如何从重定向的请求中获取 MiniProfiler 日志?

javascript - 跨站点 ajax 请求不起作用