2012-10-02 12 views
8

के अंदर foreach का अनुमान है मेरे पास एक आंशिक दृश्य है जो एक अजाक्स फ़ॉर्म जमा करने के बाद जावास्क्रिप्ट फ़ंक्शन कॉल देता है। यह पते की एक सूची लेता है और जावा मानचित्र पर जावास्क्रिप्ट फ़ंक्शंस को कॉल करता है और Google मानचित्र पर मार्कर लगाता है। जब मैं निम्नलिखित कोड संकलित करता हूं, तो मुझे फॉरएच लाइन में var के चारों ओर त्रुटि "सशर्त संकलन बंद कर दिया जाता है" मिलता है।एएसपी एमवीसी रेजर जावास्क्रिप्ट ब्लॉक

@model IEnumerable<TestStore.Models.Address> 

@if (Model.Count() > 0) 
{ 
<script type="text/javascript"> 
    deleteMarkers(); 

    @foreach(var item in Model) 
    { 
     codeAddress('@item.GetAddress'); 
    } 
</script> 
} 

मैं कोड के साथ बेला के आसपास है और निम्नलिखित के बिना काम त्रुटियों संकलित करता है:

@if (Model.Count() > 0) 
{ 
<script type="text/javascript"> 
    deleteMarkers(); 
</script> 

    foreach (var item in Model) 
    { 
     <script type="text/javascript"> 
      codeAddress('@item.GetAddress'); 
     </script> 
    } 
} 

चर्चा के लिए, यदि मैं तर्क है, जावास्क्रिप्ट समारोह का एक बहुत अंदर कॉल लूप बनाने कि मैं 1 स्क्रिप्ट ब्लॉक के अंदर सबकुछ घिरा करना पसंद करूंगा। मैंने स्टैक ओवरफ़्लो के चारों ओर खोज की और ऐसा लगता है कि रेजर सिंटैक्स एक स्क्रिप्ट ब्लॉक के अंदर जा सकता है लेकिन मुझे नहीं पता कि यह मेरे उदाहरण में कैसा दिखता है।

उत्तर

14

इसकी वजह यह है कि आपके लूप के अंदर जावास्क्रिप्ट सी # कोड को रेजर जैसा दिखता है। इसे <text> में लपेटें। सामान्य किसी भी ब्लॉक सामग्री में { /* this is block content */ } हमेशा एक ही एचटीएमएल नोड होना चाहिए - या यदि आप न (आपके मामले में) की तरह एक HTML नोड की जरूरत है आप <text>

@foreach(var item in Model) 
{ 
    <text>codeAddress('@item.GetAddress');</text> 
} 
27

उपयोग कर सकते हैं या आप <text> के बजाय @: सिंटैक्स का उपयोग कर सकते हैं आपके पाश में तत्व। Here एक ट्यूटोरियल है।

@:codeAddress(@item.GetAddress); 
संबंधित मुद्दे