Проблема, которую вы видите, связана с разницей между Угловой маршрутизацией на стороне клиента и маршрутизацией на стороне сервера MVC. Фактически вы получаете ошибку 404 Page Not Found
, потому что у сервера нет контроллера и действия для этого маршрута. Я подозреваю, что вы не обрабатываете ошибки, поэтому кажется, что ничего не происходит.
При перезагрузке http://localhost:5000/aboutus
или если вы попытаетесь установить ссылку на этот URL непосредственно из ярлыка или, введя его в адресную строку (глубокую ссылку), он отправит запрос на сервер. ASP.NET MVC попытается решить этот маршрут, и в вашем случае он попытается загрузить aboutusController
и выполнить действие Index
. Конечно, это не то, что вы хотите, потому что ваш маршрут aboutus
является угловым компонентом.
Что нужно сделать, так это создать способ для маршрутизатора ASP.NET MVC передавать URL-адреса, которые должны быть разрешены Угловым обратно клиенту.
В файле Startup.cs
, в методе Configure()
, добавьте «спа-запасной вариант» маршрут к существующим маршрутам:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
// when the user types in a link handled by client side routing to the address bar
// or refreshes the page, that triggers the server routing. The server should pass
// that onto the client, so Angular can handle the route
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index" }
);
});
Создав кетчуп все маршрут, который указывает на контроллер и вид, что в конечном счете загружает ваше приложение «Угловое», это позволит URL-адресам, которые сервер не обрабатывает, для передачи на клиент для правильной маршрутизации.
Вы решаете эту проблему? У меня такая же проблема. – Jenan