#c# #angular #asp.net-core #asp.net-core-mvc
#c# #угловой #asp.net-ядро #asp.net-core-mvc
Вопрос:
Я создал default ASP.NET Проект Core Angular. Мне нужно открывать приложение angular только по ссылке / angular. Также, когда угловая маршрутизация также должна находиться под ссылкой /angular, например «/angular/profile» — страница профиля, «/angular/item /22» — страница с элементом. По ссылкам, которые не содержат «/ angular», мне нужны открытые статические файлы или представления MVC.
Проект по умолчанию использует SPA, поэтому я не хочу его менять.
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
Есть ли какое-либо решение для этого?
Комментарии:
1. Я нашел, как запустить приложение angular по ссылке:
spa.Options.DefaultPage = "/angular";
, но после использования ссылки маршрутизации в приложении сбрасывается с помощью «/»
Ответ №1:
Если вы хотите указать базовый URL-адрес для просмотра из папки Angular ClientApp, попробуйте установить href
атрибут base
, перейдя в ClientApp> src> index.html как показано ниже :
<head>
<meta charset="utf-8">
<title>ClientApp</title>
<base href="/angular">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
После этого URL-адрес, подобный этому:
Нет необходимости изменять метод UseSpa, мой метод UseSpa (), как показано ниже:
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});