2008-10-06 17 views
16

में StringTemplate.Net के साथ संघर्ष में है। मैं एएसपी.नेट एमवीसी की खोज कर रहा हूं और मैं साइट को इंटरैक्टिव बनाने के लिए jQuery जोड़ना चाहता था। मैंने स्ट्रिंग टेम्पलेट का इस्तेमाल किया, जिसे नेट पर पोर्ट किया गया, मेरे टेम्पलेट इंजन के रूप में एचटीएमएल उत्पन्न करने और जेएसओएन भेजने के लिए। हालांकि, जब मैं पृष्ठ देखता हूं, तो मैं इसे नहीं देख सका। डिबगिंग के बाद, मुझे एहसास हुआ है कि स्ट्रिंग टेम्पलेट द्वारा संपत्ति का उपयोग करने के लिए $ का उपयोग किया जाता है, आदि और jQuery भी इसे डीओएम में हेरफेर करने के लिए उपयोग करता है। जी, मैंने अन्य टेम्पलेट इंजनों को देखा है और उनमें से अधिकतर डॉलर के चिह्न का उपयोग करते हैं :(

एएसपी.नेट एमवीसी के लिए कोई वैकल्पिक टेम्पलेट इंजन? मैं jQuery को बरकरार रखना चाहता था क्योंकि एमएसएफटी ने घोषणा की कि यह विजुअल में उपयोग किया जाएगा स्टूडियो (2008?)

अग्रिम धन्यवाद :)

अद्यतन

ASP.NET MVC के लिए खाका इंजन की एक व्यापक सूची के लिए ASP.NET MVC View Engine Comparison प्रश्न में the answer के लिए जाने के लिए कृपया, और उनके पक्ष-विपक्ष

अद्यतन 2

अंत में मैं सिर्फ JQuery सहित जावा स्क्रिप्ट कोड, डाल देता हूँ, एक अलग स्क्रिप्ट फ़ाइल में है, इसलिए मैं टेम्पलेट फ़ाइल में $ mingling के बारे में चिंता नहीं होगी।

अद्यतन 3

प्रतिबिंबित करने के लिए कि मैं क्या हल करने की जरूरत है शीर्षक बदल दिया है। आखिरकार "वाई में सर्वश्रेष्ठ एक्स" बहुत ही व्यक्तिपरक प्रश्न है।

+0

मैंने स्ट्रिंग टेम्पलेट के बारे में बहुत सी बातें सुनी हैं, यह देखना दिलचस्प होगा कि आप एएनटीएलआर डिलीमीटरों को नीचे बताए अनुसार यह काम कर सकते हैं ... – Xian

+0

'$' के लिए बेहतर डिलीमीटर क्या हो सकता है? क्या यह <$ ... $> 'हो सकता है? – OnesimusUnbound

+1

http://stackoverflow.com/questions/1451319/asp-net-mvc-view-engine-comparison –

उत्तर

12

आप निश्चित रूप से अपने जेएस तर्क को .js फ़ाइल में ले जा सकते हैं। लेकिन अगर आप इसे अपने स्ट्रिंग टेम्पलेट दृश्यों के साथ इनलाइन करना चाहते हैं, तो आप \ $ निर्माण का उपयोग करके इसे से बच सकते हैं।

इसके अलावा, यदि आप भागने वाले वाक्यविन्यास से बचना चाहते हैं तो आप $ ("चयनकर्ता") के बजाय jQuery ("चयनकर्ता") का उपयोग कर सकते हैं।

यहां using StringTemplate as a View Engine in MVC पर एक अच्छा लेख है।

एक साथ OpenSource engine, along with some samples भी है।

इसके अलावा, ऊपर वर्णित अनुसार, आप अपने टाइप लेक्सर को संशोधित कर सकते हैं। (इसे $ के लिए एक वैकल्पिक चरित्र बनाओ)। इस के बजाय

jQuery(

:

+3

$ के बजाय jQuery का उपयोग कर एक अच्छा खरगोश है, क्योंकि प्रोटोटाइप और एमएस AJAX पुस्तकालयों को $ hijack फिर भी, और आप स्पष्ट रूप से जानना चाहते हैं कि jQuery क्या है और क्या इतना अच्छा नहीं है। – DevelopingChris

6

शायद jQuery.noConflict के लिए आप

+2

मुझे लगता है कि यह विकल्प स्ट्रिंग टेम्पलेट के लिए लागू नहीं है। Stringtemplate एक जावास्क्रिप्ट लाइब्रेरी नहीं है। NoConflict() का उपयोग तब किया जाता है जब एक और जावास्क्रिप्ट लाइब्रेरी का उपयोग किया जाता है और वह लाइब्रेरी $ – OnesimusUnbound

+2

का उपयोग क्यों करती है "$" – ANaimi

+1

के बजाय "jQuery" का उपयोग क्यों नहीं करें मैं हमेशा '$' :) चाहता था। वैसे भी, आपके पास एक बिंदु ANaimi है :)। मुझे लगता है कि मैं '$' – OnesimusUnbound

1

आप की कोशिश की है $$ या/$ स्ट्रिंग टेम्पलेट में डॉलर चिह्न से बचने के लिए काम करेंगे? मैं विशेष रूप से एसटी के बारे में निश्चित नहीं हूं लेकिन यह है कि अधिकांश टेम्पलेट इंजन कैसे काम करते हैं।

अन्य टेम्पलेटिंग इंजनों के लिए, जब मैं इसे किसी प्रोजेक्ट पर इस्तेमाल करता था तो मुझे वास्तव में nVelocity पसंद था।

+0

एसटी को $ $ के रूप में इंगित करने के लिए उपयोग करता हूं जब इंजन आउटपुट उत्पन्न करता है, लेकिन यह अजीब लग रहा था। खैर, मैं nVelocity पर देख सकता हूं और देख सकता हूं कि मुझे यह पसंद आएगा या नहीं। :) – OnesimusUnbound

+0

अनुवर्ती। nVelocity के लिए $ (http://www.mail-archive.com/[email protected]/msg00098.html) के लिए कोई समस्या है लेकिन फिर nVelocity क्लीनर दिखता है। – OnesimusUnbound

3

mvccontrib प्रोजेक्ट पर एक नज़र डालें। इस समय उनके पास 4 अलग-अलग दृश्य इंजन हैं जो ब्राइल, नहल, नेवेलोकिटी और एक्सएसएलटी हैं।

http://www.codeplex.com/MVCContrib

10

मैं अत्यधिक Spark की सिफारिश करेंगे। मैं इसे थोड़ी देर के लिए jQuery के साथ उपयोग कर रहा हूं और अब तक एक भी मुद्दे में नहीं चला है।

+2

स्पार्क jQuery के साथ टकरा नहीं जाएगा क्योंकि $ केवल एक {अभिव्यक्ति} के सामने सीधे पहचाना जाता है। कोई वैध jQuery कथन नहीं है जो "$ {" से शुरू होता है। – loudej

+0

स्पार्क बहुत ही आशाजनक दिखता है। मुझे यह पसंद आया। – OnesimusUnbound

+0

मैं हाल ही में स्पार्क का उपयोग कर रहा हूं, और यह अब तक बहुत अच्छा काम कर रहा है। अत्यधिक सिफारिशित। –

3

यदि आप एसटी विकी से स्ट्रिंग टेम्पलेट (एसटी) see this article के साथ रहना चाहते हैं। आप Antlr.StringTemplate.Language \ DefaultTemplateLexer.cs संपादित करके और "$" को बदलकर पूरी तरह से व्यवहार को बदल सकते हैं।

7

JQuery इस तरह jQuery कीवर्ड का उपयोग करके किया जा सकता है disambiguated

$(

मैं इस एक सबसे अच्छा अभ्यास पर विचार करेंगे। यह किसी अन्य पुस्तकालय के साथ संघर्ष करने की किसी भी संभावना को समाप्त करता है, और कोड को और अधिक पठनीय बनाता है।

3

मैं वास्तव में Django में वाक्य रचना की तरह है, इसलिए मैं NDjango की सलाह देते हैं :)

1

JsonFx.NET परिचित ASP.NET शैली वाक्य रचना के साथ एक शक्तिशाली क्लाइंट साइड templating इंजन है। संपूर्ण ढांचा विशेष रूप से jQuery और एएसपी.नेट एमवीसी के साथ अच्छी तरह से काम करने के लिए डिज़ाइन किया गया है। आप असली दुनिया यूआई बनाने के उदाहरण कैसे प्राप्त कर सकते हैं: http://code.google.com/p/jsonfx-examples/

1

मैं एएसपी.नेट एमवीसी प्रोजेक्ट के लिए एएनटीएलआर स्ट्रिंग टेम्पलेट का उपयोग कर रहा हूं। हालांकि मैंने जो किया वह '%' (aspx.template.g) को डिलीमीटर के रूप में पहचानने के लिए स्ट्रिंग टेम्पलेट व्याकरण (template.g) को विस्तारित करना था। यदि आप StringTemplate.net संस्करण डाउनलोड करते हैं तो आप इन फ़ाइलों को पा सकते हैं। मैंने संबंधित फाइलें जेनरेट की: AspxTemplateLexer.cs, AspxTemplateParser.cs, AspxTemplateParserTokenTypes.cs और AspxTemplateParserTokenTypes.txt।

इसके अतिरिक्त मैंने एक्सटेंशन को पहचानने के लिए StringTemplateLoader.cs को बदल दिया .aspx और .ascx जो विजुअल स्टूडियो पहचानता है। इस तरह मैं .st एक्सटेंशन के साथ अटक नहीं गया हूं और ग्राहकों को अंतर नहीं पता है।

स्ट्रिंग टेम्पलेट के पुनर्निर्माण के बाद भी मेरे पास ऐसा व्यवहार है जो मैं चाहता हूं। स्ट्रिंग टेम्पलेट के बारे में मुझे क्या पसंद है कि यह किसी भी कोड को टेम्पलेट में एम्बेड करने की अनुमति नहीं देता है। ऐसा लगता है कि स्पार्क जैसे डिफ़ॉल्ट एएसपी/एमवीसी टेम्पलेट कोड अनुमोदित है जो टेम्पलेट को कम पोर्टेबल बनाता है।

मैं पसंद करता हूं "<%" और "%>" delimiters के रूप में, लेकिन दुर्भाग्य से एएनटीएलआर व्याकरण कुछ मुश्किल और नाजुक लगता है जब तक कि किसी और ने इसे नहीं किया है। दूसरी ओर स्ट्रिंग टेम्पलेट के पास एक महान समर्थन समुदाय और अलगाव के लिए एक महान दृष्टिकोण है - जो एमवीसी का मुद्दा है।

0

आपको इस .NET Template Engine की आवश्यकता हो सकती है। यदि आप '$' वर्ण का उपयोग करना चाहते हैं, तो बस '$$' का उपयोग करें। देखें नीचे दिए गए कोड:

{%carName = "Audi R8"/} 

{%string str = "This is an $carName$"/} 

$str$ 
$$str$$ 

व्यवहृत किया जा सकेगा

This is an Audi R8 
$str$ 
0

अगर मैं StringTemplate संस्करण 4 को समझने सही ढंग से आप में Template (या TemplateGroup) निर्माता अपने खुद के भागने चार परिभाषित कर सकते हैं। (यह अर्थ

0

मिले मूंछें सबसे मूर्ख प्रूफ, सबसे आसान से उपयोग, सबसे हल्का पूर्ण विशेषताओं templating नेट परियोजनाओं (वेब ​​और बैकएंड)

निर्माण अच्छी तरह से नेट 3.5 के साथ के लिए इंजन होने के लिए नहीं है गतिशील प्रकार और .NET 4 की आवश्यकता है।मिश्रित प्रकार के मॉडल के लिए काम करने के लिए 0, जैसे रेजर)।

जो भाग मुझे सबसे ज्यादा पसंद है वह मनमाने ढंग से पहचानने की क्षमता है और इंजन सही काम करता है। यह कदम सुपर सरल reboxing अनिवार्य के लिए सभी इंजनों बनाता है:

var child = new { 
    nested = "nested value" 
}; 
var parent = new { 
    SomeValue = "asdfadsf" 
    , down = child 
    , number = 123 
}; 

var template = @"This is {{#down}}{{nested}}{{/down}}. Yeah to the power of {{number}}"; 

string output = Nustache.Core.Render.StringToString(template,parent); 
// output: 
// "This is nested value. Yeah to the power of 123" 

क्या मूंछें के बारे में सबसे सुंदर है कि एक ही सटीक टेम्पलेट शुद्ध जावास्क्रिप्ट में बिल्कुल वैसा ही या 20 या समर्थित भाषाओं के किसी अन्य काम करता है।

+0

मुझे इसके साथ अनुभव था, लेकिन मुझे सामग्री को स्थानीयकृत करने के लिए कोई विकल्प नहीं दिख रहा है। मेरे test.aspx टेम्पलेट पेज पर वैश्विक संसाधनों का उपयोग करना "<% = Resources.Test.FirstName%>" जैसा पार्स होगा। – jimmyo