Ich versuche von einem MVC-Controller auf eine Winkel 2 App umzuleiten, die innerhalb eines Bereichs des MVC Projekt befindet, ist Struktur wie folgt:Umleiten zu Angular2 app innerhalb einer ASP.NET MVC-Controller mit Parametern
Clients.Web (MVC project)
|
+--Areas
|
+--Legacy
| |
| +--Controllers
| |
| +--Action1ApiController
|
+--Web
|
+--app
| |
| +--action1
| | |
| | +--action1.component.ts
| |
| +--action2
| | |
| | +--action2.component.ts
| |
| +--app.component.ts
| +--index.html
| +--main.ts
|
+--assets (vendor modules, images etc.)
+--Controllers
| |
| +--AppController.cs
|
+--node_modules
+--typings
|
...
Ich muss in der Lage sein, von einer alten MVC-Seite in die Angular 2 App, z
/Web/App/Action1?param1=10¶m2=15
sollte
/Action1/:param1/:param2
in Angular verlegt werden. Zur gleichen Zeit muss ich der Lage sein, Aktionen aufzurufen auf
/Areas/Legacy/Controllers/Action1ApiController
Ich kann nicht, für die Liebe von Cookies, herauszufinden, wie das zu tun. In meinem index.html
stelle ich die base href
zu
<base href="/Areas/Web/">
In derselben Datei ich das Hauptmodul mit SystemJS importiert,
<script>
System.config({
baseURL: './',
map: {
'angular2': '/Areas/Web/node_modules/angular2',
'rxjs': '/Areas/Web/node_modules/rxjs'
}
});
System.defaultJSExtensions=true;
System.import('/Areas/Web/app/main')
.then(null,console.error.bind(console));
</script>
wo ich die app
import { bootstrap } from 'angular2/platform/browser';
import { AppComponent } from './app.component';
bootstrap(AppComponent, [])
.then(success => console.log('Bootstrap success'))
.catch(error => console.log(error));
Schließlich dann Bootstrap, in app.component
Ich richte
Allerdings, wenn ich dann navigieren
/Areas/Web/app/index.html?param1=10¶m2=!5
ich
param1 = 'app'
param2 = 'index.html'
in Action1Component
geben, was eindeutig nicht das, was ich wollte. Alle Hinweise würden geschätzt werden.
EDIT:
Routing zielt nur die AppController
im Moment
routes.MapRoute("SPA", "Web/{controller}/{action}/{id}",
new { controller = "App", action = "Index", area = "Web", id = UrlParameter.Optional },
new[] { "SomeSite.Areas.Web.Controllers" });
und der Code für die Aktion ist
public class AppController : Controller
{
public ActionResult Index(int param1, int param2)
{
return Redirect($"/Areas/Web/app/index.html?param1={param1}¶m2={param2}");
}
}
Als ich ein Vermächtnis Web-Migration Seite eine Seite auf einmal, die Idee ist, Aktionen Action1, Action2
etc. auf der AppController
an d Verknüpfen Sie diese Aktionen mit Legacy-Seiten.
Also eine Frage, wollen Sie die Parameter in der URL sein, nicht als Parameter, richtig? Weil das ist, wie Sie die Route in Angular geschrieben haben, aber nicht, was Sie es in dem Beispiel gegeben haben ... Und können Sie Ihre MVC-Routing hinzufügen, weil das ist, was das ganze schwere Heben hier tun wird – Namirna
Ja, Parameter sollten Wenn Sie in der URL erscheinen, migriere ich gerade eine Seite nach Angular 2. Routing und Action Code in meiner Frage hinzugefügt. –