Ich baue auf eine massive Razor-Website, die ich nicht umbauen kann. Ich muss AngularJs auf der Client-Seite verwenden, und wenn die Seite geladen wird, gibt es ein bisschen von der Server-Seite, die prepressessing ist, die getan werden muss, bevor die Seite gerendert wird.Zugreifen auf Abfragezeichenfolge mit Razor und AngularJs
Ich muss einen Parameter an C# über die URL-Abfrage-Zeichenfolge übergeben, und ich brauche den gleichen Parameter auf der JavaScript-Seite. Derzeit, wenn ich diese URL:
http://localhost:32289/razorPage.cshtml#/?param="1234"
ich diesen Wert auf der Seite JavaScript bekommen, aber wenn ich rufe
var queryString = HttpContext.Current.Request.QueryString;
auf der Serverseite, ist es leer. Außerdem, wenn ich diese URL:
http://localhost:32289/razorPage.cshtml/?param="1234"#/
kann ich den Abfrage-String auf der Server-Seite zuzugreifen, aber dann geht JavaScript Nüsse, als ob ich ständig den Code in meinem Eckige Controller rerunning wurde. Ich erhalte diese in der Chrome-Konsole:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
Und schließlich einen Fehler, der die maximale Anrufstapelgröße sagt erreicht ist. Wenn ich einen console.log()
in diesen Winkel-Controller einfüge, protokolliert er kontinuierlich, bis die maximale Größe des Aufruf-Stacks erreicht ist.
Das ist mein razorPage.cshtml
:
@{
Page.Title = "OCE Visualizer";
Page.IsDetailedView = false;
Page.IsCapacity = false;
Page.IsEmbedded = false;
InitProvider.Init();
}
<html>
<!--...AngularJs App lives in here-->
</html>
Die init-Methode (die einige Daten Ordner auf dem Server auffüllt, so dass sie zu Angular bedient werden können) verwendet Parameter aus der Abfrage-String, wie auch die AngularJS App, die verwaltet auch sein eigenes Routing.
Ich bin relativ neu in Razor, aber ich kenne AngularJs. Ich denke, ein Teil des Problems könnte auf die Art und Weise zurückzuführen sein, in der .NET das Routing verwaltet, was mit der Art und Weise, wie Angular es tun kann, nicht klappt. Ich bin bewusst, this und this SO Antworten, aber sie gelten für eine MVC-App, wo meins ist nur eine Website mit vielen .cshtml
Seiten, keine Controller
s oder API
s.
Gibt es eine Möglichkeit, auf Abfragezeichenfolgen in Angular und Razor C# zuzugreifen, während AngularJs-Routing mit "hübschen" URLs beibehalten wird?
Wenn Sie Ihren JS-Code dort posten, wo Sie versuchen, Daten von der URL abzurufen, kann möglicherweise jemand helfen. –