gpt4 book ai didi

javascript - 使用 AngularJS 路由的 ASP.NET 5 路由

转载 作者:行者123 更新时间:2023-11-30 07:58:42 25 4
gpt4 key购买 nike

我正在使用 ASP.NET 5 和 AngularJS 开发应用程序。我正在使用 Angular 提供的基本客户端 HTML 路由支持。我已经成功实现了 Angular Routing,Startup 类中的默认路由是

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

这是我的 Angular 路由

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

一切正常,但是当我在同一个 Controller 中创建另一个 Action 并想通过 URL 重定向到该 Action 时,它将它重定向到相同的 Action ,即索引

这是我的 HomeController 代码

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

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

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

最佳答案

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

1) 使用属性路由,以及

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

同时检查您的 web.config 文件以在 system.webServer 部分的 rewrite 节点或任何其他重定向配置中进行重定向

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

附言尝试使用 angular-ui-routing 而不是默认的 ng-routeng-route 很好,但它不能很好地支持子路由,而且还有一些其他问题。 angular-ui-routing 解决了所有这些乱七八糟的事情

关于javascript - 使用 AngularJS 路由的 ASP.NET 5 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com