Asp.net核心1.0和Angular 1路由问题

时间:2016-09-19 15:11:50

标签: angularjs asp.net-core asp.net-core-mvc

我有一个asp.net核心1.0应用程序(MVC)+ AngularJS 1.我有一个控制器Home,其行动Index看起来像

[Route("UsersModule/[controller]/[action]")]
public class HomeController : UsersModuleControllerBase, IWebFrameModuleController
{
    public IActionResult Index()
    {
        return View();
    }
}

UsersModule/Home/Index视图如下所示:

... 

<div id="usersModule">
    <div ng-view></div>
</div>

...

我在div元素上动态引导角度。

想象一下2条角度路线。第一个是默认($routeProvider.otherwise路由)。

//1
"templateUrl": "Modules/UsersModule/app/users/pages/users.html",
"controller": "usersModule.UsersCtrl"

 //2 
"url": "/users",
"templateUrl": "Modules/UsersModule/app/users/pages/users.html",
"controller": "usersModule.UsersCtrl"

因此,当我浏览http://localhost/<app_name>/UsersModule/Home/Index时,我得到了正确的一切 - 角度模板和控制器都被加载等等。

问题

但是当我浏览http://localhost/<app_name>/UsersModule/Home/Index#/users时。浏览将URL重写为http://localhost/<app_name>/UsersModule/Home/Index#!#%2Fusers,没有任何反应,没有js错误,没有请求等等。

这些字符的转义是新的东西,我想这可能是我的加载问题的原因。我在asp.net核心之前没有遇到任何问题。

我也会复制粘贴部分Startup.cs文件:

ConfigureServices我有

var mvcBuilder = services
                .AddMvc()
                .AddJsonOptions(options =>
                {
                    options.SerializerSettings.DateParseHandling = Newtonsoft.Json.DateParseHandling.None;
                    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                })
                .AddMvcOptions(options =>
                {
                    options.Filters.Add(new GlobalExceptionHandlerFilter(log4netLogger));
                });

Configure方法:

 app.UseStaticFiles();

 app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller}/{action}/{id?}",
                defaults: new { controller = "Home", action = "Main" });
        });

1 个答案:

答案 0 :(得分:0)

我没有提到我使用1.5.5 angularjs。我将角度升级到最新的1.5.8。

除此之外,我删除了所有包 <user_folder>\.nuget\packages<user_folder>\.nuget\.tools我在我的解决方案上执行了恢复包。

在所有这一切之后,现在一切都恢复正常并且它正在发挥作用。没有奇怪的URL编码等。

我还尝试将AngularJS版本降级到1.5.5并且我开始获取奇怪的编码网址并且它部分工作(虽然一切都很好)。

希望这对有同样问题的人有所帮助。