2015-05-19 5 views
5

Ich muss web.config appsettings in MVC-Controller-Methode lesen und sie übergeben, um die Einstellungen in Angularjs Controller und Service anzuzeigen und zuzugreifen. Ich denke, die Appsettings durchzulaufen und ein Wörterbuch mit Schlüssel/Wert-Paaren vorzubereiten und ein Modellobjekt an meine Ansicht zu übergeben. Aber wie kann ich überall in der eckigen Anwendung darauf zugreifen?Wie liest man die web.config-Einstellungen in der MVC-Controller-Methode und greift auf diese in angularjs view, controller und service zu?

+1

Vielleicht kann Ihnen das helfen - http://StackOverflow.com/Questions/1197101/best-practices-for-passing-data-from-asp-net-mvc-to-javascript –

Antwort

3

So wie ich diese Art der Sache zu tun ist ziemlich einfach, wie Sie vorschlagen (JSON.net und Rasiermesser):

  1. ein Wörterbuch oder Objektdiagramm mit den Daten bereite ich zur Verfügung stellen möchten.
  2. Daten als Teil des ViewModels vom Controller an die Ansicht übergeben
  3. Serialisieren Sie die ViewModel-Daten, indem Sie sie als globale JavaScript-Variable in die Vorlage cshtml einfügen. Ich habe den folgenden Trick verwenden, um diese an der Arbeit:
<script> 
    var AppSettings = (function(o) { 
     return o; 
    })(@Html.Raw(JsonConvert.SerializeObject(Model.AppSettings))); 
</script> 
  1. Einen Winkel Dienst, der (und Kopien) den globalen JavaScript-Variable liest.
  2. Clients der Daten greifen über den eckigen Dienst zu.

Der Dienst ist nur ein dünner Wrapper, obwohl er manchmal Logik und Zugriffsmethoden enthält. Der Wert hier ist, dass Sie nur auf die globale Variable (eine "schmutzige" Praxis in der eckigen Welt) von nur einer Stelle in Ihrem Code zugreifen. "Verkapsele das hässliche Zeug!"

Hinweis: Dies erfordert, dass Ihre eckige App von der MVC-Website über eine cshtml Vorlage bereitgestellt wird. Der Vorteil dieses Ansatzes gegenüber einem AJAX-Aufruf besteht darin, dass die interessierenden Daten direkt verfügbar sind, wenn die eckige App bootstrapped wird ... die Daten können über den Dienst synchron erreicht werden. Dies vereinfacht den Zugriff auf die Daten. Wenn Asynchronität in Ordnung ist, würde ich vorschlagen, einen AJAX-Anruf von Ihrem Dienst zu tätigen, das Ergebnis zwischenzuspeichern und ein Versprechen abzugeben. Mit dem AJAX-Ansatz gibt es keine Kopplung zwischen der eckigen Vorlage und Ihrem MVC-Projekt, so dass Sie Ihre eckige Vorlage als einfache HTML-Datei verwenden können.

0

Wenn Sie nicht asp.net MVC-Ansicht verwenden, können Sie eine AJAX-Anfrage senden Server-Endkonfiguration senden, Server-End-Konfiguration für diese AJAX-Anfrage lesen.

Verwandte Themen