2016-04-04 16 views
1

Şu anda javascript'te, denetleyiciye geçen json nesnesindeki değerlerden biri olarak bir model özelliği kullanıyorum. Sorun, javascript'in .js dosyasında ayrılmış olması ve @Model'e erişememesidir. Yani soru şu; modele ayrılmış bir .js dosyasından nasıl erişebilirim?Ayrı javascript dosyasından model özelliğine nasıl erişilir? (MVC)

+1

bir geçici çözüm sizin görünümü ve js dosyasında erişimde javascript değişkeni oluşturmaktır: ' ' Ve js dosyanızdaki ** varWithValue ** 'ye erişin. –

+0

@GeneR Kullanıcıya önerdiğim öneriydi, bu yüzden kısmen sorumlu hissediyorum. Sayfanın modeline erişmenin alternatif bir yolu var mı? Yoksa tek seçenek *@Model.Blopp*? –

cevap

1

Sen JavaScript Files içindeki (maalesef artık mantained görünüyor)

Yaz Jilet Stil C# veya VB.NET RazorJs deneyebilirsiniz. Ayrıca , gerektiğinde, bu dosyaları sunmak için bir http işleyicisi içerir.

Sen this gibi bir şey yapabileceğini:


Görüntüleme/Ev

@{ 
    ViewBag.Title = "Home Page"; 
} 

@Html.RazorJSInclude("~/Scripts/App/TestRazorJS.js") 
<button id="btnSearch" name="submit" type="button" onclick="LoadFromRazor()">Search</button> 

Scripts/Uygulama/TestRazorJS.js

function LoadFromRazor() { 
    $.ajax({ 
     url: '@Url.Action("Test", "Home")', 
     datatype: 'json', 
     type: 'GET', 
     cache: false, 
     success: function() { console.log('done'); }, 
     error: function (xhr, status, error) { 
      console.log(status); 

     } 
     }); 
    } 
1

Her zamanki gibi harici JavaScript yükleyebilir ve görünümde böyle bir init yöntemine bir özellik olarak modeli değeri göndermek:

: o zaman
<script type="text/url" src="externalscript.js"/> 
<script type="text/javascript"> 
     $(function() { 
      var model = home.views(); 
      model.init({ 
       modelProperty: '@Model.Property', 
      }); 
</script> 

Ve externalscript.js

benziyor
(function (window) { 
    home = window.home || {}; 
    home.views = function() { 
     pub.init = function (options) { 
      var property = options.modelProperty; 
     }; 
     return pub; 
})(window); 

Ayrıca, mülkünüzü dış komut dosyasında istediğiniz gibi kullanabilirsiniz.

İlgili konular