Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.NET 5路由与AngularJS路由_Javascript_Asp.net_Angularjs_Asp.net Mvc - Fatal编程技术网

Javascript ASP.NET 5路由与AngularJS路由

Javascript ASP.NET 5路由与AngularJS路由,javascript,asp.net,angularjs,asp.net-mvc,Javascript,Asp.net,Angularjs,Asp.net Mvc,我正在用ASP.NET5和AngularJS开发一个应用程序。我使用Angular提供的基本客户端HTML路由支持。我已经成功地实现了角度路由,启动类中的默认路由是 app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}");

我正在用ASP.NET5和AngularJS开发一个应用程序。我使用Angular提供的基本客户端HTML路由支持。我已经成功地实现了角度路由,启动类中的默认路由是

app.UseMvc(routes => 
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
这是我的路线

app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider.
    when('/', {
        templateUrl: 'static/home.html',
        controller: 'AppController'
    }).
    when('/about', {
        templateUrl: 'static/about.html',
        controller: 'AppController'
    }).
    when('/contact', {
        templateUrl: 'static/contact.html',
        controller: 'AppController'
    }).
    when('/tutorial', {
        templateUrl: 'static/tutorial.html',
        controller: 'AppController'
    }).
    otherwise({
        redirectTo: '/'
    });

    $locationProvider.html5Mode(true);
 }]);
这一切都很好,但当我在同一个控制器中创建另一个操作并希望通过URL重定向到该操作时,它会将其重定向到同一个操作,即索引

这是我的HomeController代码

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

    public IActionResult Web()
    {
        return View();
    }
}

路由发生在索引中,但无法导航到Web操作。我面临的问题是什么。谢谢。

试试这一条来登记您的路线

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

试试这个来登记你的路线

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
试试这个:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
然后在您的配置下尝试以下操作:

   .controller('RootController', ['$rootScope', '$scope', '$route', '$routeParams', '$location', '$http',
    function ($rootScope, $scope, $route, $routeParams, $location, $http) {

        $scope.$on('$routeChangeSuccess', function (e, current, previous) {
            $scope.activeViewPath = $location.path();
        });

    }]);
希望这会有所帮助

试试这个:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
然后在您的配置下尝试以下操作:

   .controller('RootController', ['$rootScope', '$scope', '$route', '$routeParams', '$location', '$http',
    function ($rootScope, $scope, $route, $routeParams, $location, $http) {

        $scope.$on('$routeChangeSuccess', function (e, current, previous) {
            $scope.activeViewPath = $location.path();
        });

    }]);

希望这会有所帮助

我认为问题在于你的应用程序对你的
Web
方法一无所知。要解决此问题,您可以:

1) 使用属性路由,以及

2) 在路由配置方法中写入直接路由

还要检查
system.webServer
部分的
rewrite
节点或任何其他重定向配置中的
web.config
文件的重定向

请注意,如果您重定向到另一个页面,您的angular应用程序将重新配置并重新启动。这需要一些时间。你不应该使用重定向和所有其他页面重新加载方法,如果你想你的应用程序将真的很酷。试着用“有角度”的方式思考。如果您想更改部分主要内容,angular将通过路由来完成。如果您想加载一些附加内容,并且希望它看起来像
http://host/controller/method/submethod1/submethod2
url在浏览器中-angular也可以为您完成。第一步,只需将
get()
方法放在角度控制器中。在这种情况下,angular将解析此控制器时,它将调用您的
get()
方法并从服务器加载数据。因此,您将始终能够快速应用实际内容


p.p.S.尝试使用
角度ui布线
而不是默认的
ng布线
ng-route
很好,但是它不能很好地支持子程序,并且还存在一些其他问题<代码>角度ui路由解决了所有这些麻烦问题

我认为问题在于应用程序对
Web
方法一无所知。要解决此问题,您可以:

1) 使用属性路由,以及

2) 在路由配置方法中写入直接路由

还要检查
system.webServer
部分的
rewrite
节点或任何其他重定向配置中的
web.config
文件的重定向

请注意,如果您重定向到另一个页面,您的angular应用程序将重新配置并重新启动。这需要一些时间。你不应该使用重定向和所有其他页面重新加载方法,如果你想你的应用程序将真的很酷。试着用“有角度”的方式思考。如果您想更改部分主要内容,angular将通过路由来完成。如果您想加载一些附加内容,并且希望它看起来像
http://host/controller/method/submethod1/submethod2
url在浏览器中-angular也可以为您完成。第一步,只需将
get()
方法放在角度控制器中。在这种情况下,angular将解析此控制器时,它将调用您的
get()
方法并从服务器加载数据。因此,您将始终能够快速应用实际内容


p.p.S.尝试使用
角度ui布线
而不是默认的
ng布线
ng-route
很好,但是它不能很好地支持子程序,并且还存在一些其他问题<代码>角度ui路由解决了所有这些混乱的问题

我想您不需要在家庭控制器中添加其他操作。您使用的是哪种角度布线?ng路由还是ui路由器?我想您不需要在家庭控制器中添加其他操作。您使用的是哪种角度布线?ng路由还是ui路由器?我用过角度ui路由,效果很好。但我丢失了AngularJS的漂亮URL。我必须使web.config在我的项目中可用,以便在刷新时路由到default home.html。有什么解决方案吗?angular routing engine的主要思想是它是客户端路由,而不是服务器端路由。如果您使用默认的ngRoute,您会遇到ngRoute问题列表中的一个问题—它总是对服务器进行url调用,因此您需要在web配置中使用重写规则禁用此功能。这也是为什么我建议你使用AngularUI路由插件。在这种情况下,没有必要禁用服务器端路由,您可以从mvc控制器访问所有服务器方法。我也在asp.net mvc中使用angularjs,我也遇到了和你一样的问题:)顺便说一下,如果您希望您的URL看起来像
http://host/sitename/path1/path2
而不是
http://host/sitename/#/path1/path2
当您使用angular routing system时,可以在angular模块的应用程序配置方法中启用HTML5模式设置:
$locationProvider.html5模式(true)。当然,不要忘记在config函数中注入
$locationProvider
。但是,情况是一样的:如果将ngRoute与mvc应用程序一起使用,它的性能会非常差。相信我:)我并没有在这里推广
ui路由器
实际上,我面临的问题是,我已经成功地解决了漂亮的URL和使用路由属性的主/Web服务器端路由。但我不能通过ActionLink进入另一个动作?而是将其重定向到/home html页面?有什么解决办法吗?谢谢如果我是对的,您的
web.config
文件中有重定向规则。如果是这样的话,你就不能正确地重定向到任何url,因为你的重定向规则是有效的,而且它总是会重新启动