2016-11-16 5 views
0

Ich habe eine ASP.NET MVC-Ansicht (Razor) und am Ende der Datei, die ich einige Javascript in einem Abschnitt zu laden:Resolving Razor Javascript @ Url.Content Urmuster

@section FooterScripts{ 

    <script> 
     $(function() { 
      // creates the data table 
      var ajaxUrl = '@Url.Content("~/Accounting/GetListAccounts")/'; 
     }); 
    </script> 

    <script src="~/Scripts/pages/list-account.js"></script> 

} 

Hier wird die Variable ajaxUrl ist aufgelöst, so wird die Variable den Wert erhalten: enter image description here

Nun list-account.js Prototyp Muster verwendet und hat etwas Ähnliches:

! function($) { 
    "use strict"; 

    var ListAccount = function() { 
     this.$window = $(window) 
    }; 


    ListAccount.prototype.start = function() { 
      var $this = this; 

      var ajaxUrl = '@Url.Content("~/Accounting/GetListAccounts")/'; 

     }, 
     //init 
     $.ListAccount = new ListAccount, $.ListAccount.Constructor = ListAccount 
}(window.jQuery), 

//initializing 
function($) { 
    "use strict"; 
    $.ListAccount.start(); 
}(window.jQuery); 

Mein Problem ist, dass hier die Variable ajaxUrl nicht aufgelöst wird. Scheint wie Razor@Url.Content zu lösen die Variable sollte innerhalb des Codes sein.

Jede Problemumgehung oder Lösung, so dass meine prototype javascript Datei den @ Url.Content gelöst bekommt?

+0

Razor-Code wird nicht in externen Dateien analysiert. –

+0

@StephenMuecke kann ich diese Variable vorher deklarieren und an die Datei übergeben? – VAAA

+0

Sicher. Solange wie in der Hauptansicht 'var ajaxUrl = '@ Url.Content (" ~/Accounting/GetListAccounts ") /';' ist, können Sie einfach 'ajaxUrl' in der externen Datei –

Antwort

0

, wenn Sie den Rasierer in Javascript verwenden möchten, müssen Sie die JS-Code in der .cshtml Datei, wie Ihr Fall schreiben, können Sie die ajaxUrl als globale Variable setzen und rufen Sie es in Ihrem .js Datei, so etwas wie unten:

in index.cshtml Datei

<script> 
var ajaxUrl = '@Url.Content("~/Accounting/GetListAccounts")/'; 
</script> 

und Sie können direkt ajaxUrl in Ihrem verwenden list-account.js Datei jetzt