Átadás MVC modell adatai Kliens oldali géppel Code

szavazat
11

Ha MVC, néha át a szerver modell adatai a kliens oldali JavaScript segítségével Razor fecskendeznek a JavaScript, az alábbiak szerint:

<script type=text/javascript>
    var myClientGuid = '@Model.MyServerGuid';
</script>

Ez beállítja a JavaScript változó nevű myClientGuid, hogy az érték a szerver oldali modell tulajdonság MyServerGuid. Amikor eléri az ügyfél, a kód így néz ki a böngészőben:

<script type=text/javascript>
    var myClientGuid = 'EF0077AB-0482-4D91-90A7-75285F01CA6F';
</script>

Ez lehetővé teszi, hogy a külső JavaScript fájlok használatához ezt a változót.

A kérdésem az, géppel, mert az összes kódot kell hivatkozni keresztül a külső fájlok, mi a legjobb módja annak, hogy adja át a szerver oldali mezők géppel kódot? Külső kód fájlok nem tartalmaznak Razor kódot. Kell használni ugyanazt a technikát, mint fent, a kilátás, a keverés és a JavaScript géppel a projektben?

A kérdést 09/10/2012 19:13
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
17

A géppel fordítóprogram csak tudni kell, hogy a kiszolgáló oldali mezők léteznek. A legegyszerűbb módja, hogy az, hogy az a környezeti nyilatkozatok (lásd 10. spec). Például ha volt egy .ts fájl használatához szükséges myClientGuid, akkor nem

declare var myClientGuid: string;

a tetején a fő .ts fájlt. A fordító nem generál kódot erre var nyilatkozatot, így nem clobber semmit. Most azokat a fájlokat, hogy megemlíteni, hogy .ts fájl tudni fogja, hogy van egy myClientGuid húr rendelkezésre globális környezetben.

Válaszolt 09/10/2012 19:19
a forrás felhasználó

szavazat
2

A másik megoldás (hogy elkerüljük a globális változók), hogy lezárja a géppel kódot funkciója, amely a szükséges szerver oldali mezőket paraméterek:

Géppel file:

function setupMyPage(myGuid:string) {
   ...
}

A .cshtml:

<script src='@Url.Content("<path-to-typescript>")'></script>
<script>
    setupMyPage('@Model.MyServerGuid');
</script>

Ha ön használ RequireJS, akkor is exportálja a setupMyPagefunkciója, mint a modul, hogy ne hozzá a függvény globális névteret:

Géppel file:

export = setupMyPage;

A .cshtml:

<script>
    require(['@Url.Content("<path-to-typescript>")'], function(setupMyPage) {
        setupMyPage('@Model.MyServerGuid');
    };
</script>
Válaszolt 08/08/2014 12:24
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more