2016-04-05 19 views
2

this question için bir sonuç olarak, bir MVC ViewModel nesnesini var jsObject = @Html.Raw(Json.Encode(Model)) gibi bir teknik kullanarak Javascript'e dönüştürmenin mümkün olduğunu biliyorum.MVC ViewModel dosyasını dış .js dosyasında Javascript nesnesine dönüştürme

Sadece bu tekniği doğrudan gerçek .cshtml sayfasında kullanmak mümkün olduğunu farz ediyorum. Bu verileri harici bir .js dosyasında istemiş olsaydım ne olur?

.cshtml sayfasında var jsObject örneğini oluşturduysam, bu nesneye harici bir Javascript dosyasından erişebilir miyim, yoksa kapsam dışı kabul edilir mi?

+0

[RazorJS] kullanın (http://www.nuget.org/packages/RazorJS) –

+0

Eylem Oluşturun ve jQuery ajax kullanarak arayın. – Brij

+0

@Brij Sunucuya başka bir gidiş-dönüş yapmadan bunu yapmanın bir yolunu arıyorum. Ayrıca, RazorJS korunur gibi görünmüyor (web sitesi kapalı) ve Javascript dosyalarında C# tarzı sözdizimi kullanmak istemiyorum. – alex

cevap

3

Oluşturulan jsObject javascript dosyanızdan erişebilirsiniz. senin `.cshtml 'in

: kapsam dışında olmamak için için, bir genel gibi davranın gerekir

var jsObject = @Html.Raw(Json.Encode(Model)) 
<script src="/path/to/jsFile.js"> 

sizin jsFile.js

if(jsObject) 
{ 
// do whatever you need 
} 

Bildirimi İçinde o jsFile.js'daki bir yönteme değişkeni geçmediğiniz için, jsFile.js erişiminin tek yolu, .cshtml numaranızda hangi adı verdiğinizin bilinmesidir. Bu kodunuzu çok kırılgan yapar. Diğer, daha iyi bir yaklaşım, değişkeni JavaScript işlevinize iletmektir. senin .cshtml yılında

:

<script src="/path/to/jsFile.js"> 

var jsObject = @Html.Raw(Json.Encode(Model)) 
myProcessor(jsObject) 

Bu yaklaşımı kullanarak, myProcessor yöntem değişkenin adının ne umursamıyor.

+0

Serin tekniği ve harika açıklamalarını görmek istersiniz - teşekkürler! – alex