2014-05-14 3 views
5

मैं उस्तराजे एस फ़ाइल में ViewModel को एक्सेस करना (asp.net MVC)

@section Includes { 
     <script type="text/javascript"> 
     var somestuffneeded = @(Html.Raw(Json.Encode(Model.datamember))); 


     </script> 

} 

अंदर कुछ इस तरह उपयोग किया गया है लेकिन यह तो साफ है क्योंकि यह, लेआउट के रूप में एक ही फाइल में चला जाता है नहीं लग रहा है (यह बाद से सीधे .js फ़ाइल से काम नहीं करेगा)। ViewModel तक पहुंचने और देखने के लिए कोई भी साफ विकल्प .js फ़ाइल के अंदर पास हो गया है?

+1

भरी हुई है सरल पृष्ठों के लिए, मैंने पाया है कि आप ऊपर है बहुत अच्छी तरह से काम करता है है। अधिक जटिल परिस्थितियों के लिए, वेबएपीआई नियंत्रक का उपयोग करने का बेहतर तरीका हो सकता है। – Nate

+0

मुझे यह पता था और भूल गया। मैं चीजों को भूलना जारी रखता हूं। स्टैक ओवरफ़्लो पर मेरे पुराने प्रश्नों में यह होना चाहिए। –

उत्तर

1

आप सीधे .js फ़ाइल में ViewModel तक नहीं पहुंच सकते हैं क्योंकि यह आपके वेब सर्वर पर इसकी स्थिर फ़ाइल है। लेकिन एक वर्कअराउंड है कि आप ViewModel को .js फ़ाइल पैरामीटर के साथ पास कर सकते हैं।

कुछ .js फ़ाइल

function Common() { 
    var _this = this; 

    this.viewModel = null; 

    this.showViewModel = function() { 
     alert(_this.viewModel); 
    }; 
} 

var common = null; 
$().ready(function() { 
    common = new Common(); 
}); 

तो बस ViewModel पारित जब देखें

@section Includes { 
    <script type="text/javascript"> 
    var somestuffneeded = @(Html.Raw(Json.Encode(Model.datamember))); 
    $(document).ready(function() { 
      common.viewModel = somestuffneeded; 
      common.showViewModel(); 
    }); 
    </script> 
} 
+0

मुझे लगता है कि वह कुछ और मांग रहा है। वह कह रहा है, मैं उस 'var somestuffneeded = @ ...' कथन से कैसे बच सकता हूं। मुझे पता है कि आपने इसे "आप नहीं कर सकते" के साथ उत्तर दिया। –