2013-01-16 13 views
5

मैंने देखा है कि उस्तरा <text> टैग किसी फ़ॉरमेट परंपराओं का पालन करने के लिए मना कर दिया। उदाहरण के लिए, जब एक cshtml दस्तावेज़ स्वरूपण, मैं निम्नलिखित की तरह कोड के साथ समाप्त:उस्तरा स्वरूपण

@MyHelper.MyMethod(@<div> 
    <p>Hello world</p> 
</div>) 

@MyHelper.MyMethod(@<text> 
<p>Hello world</p> 
</text>) 

ध्यान दें कि यह या तो उस्तरा टेम्पलेट कार्यों के लिए विशिष्ट नहीं है, <text> ब्लॉक कहीं भी एक ही बात करेंगे। इस तरह के <div> रूप

ग्राहक HTML टैग (और उनकी सामग्री), स्वरूपण शैली मैं निर्दिष्ट किया है का पालन करें लेकिन मैं कहाँ (या निकालने के लिए) को जोड़ने के टैग विशिष्ट विकल्प में <text> तत्व की परवाह किए बिना। .., कोई प्रभाव नहीं है। वांछित परिणाम यह होगा कि <text> तत्व सामग्री पिछले उदाहरण में, <div> तत्व सामग्री के प्रारूप में होना।

वहाँ रहे हैं किसी भी चाल, या अन्य ब्लॉक स्तर ग्राहक HTML तत्वों के रूप में <text> तत्वों पर एक ही स्वरूपण शैली को लागू करने (<div>, <section>, आदि)

मैंने देखा है के लिए काम arounds इस तरह के here और here, तो यह रूप में उस्तरा भाषा के साथ अन्य ऐसे स्वरूपण मुद्दों, मिसाल के बिना नहीं है और ऐसा लगता है की संभावना वहाँ कोई समाधान नहीं हो सकता है। किसी भी तरह से, शायद कोई फिक्स भर गया है।

यह एक उस्तरा 2.X वेबसाइट, वी.एस. 2010


परिशिष्ट में निर्माण
है (मैं इस के थके हुए बड़े हो गए हैं।)

शायद यह 2012 में मुद्दा हल किया गया है; पता नहीं, अद्यतन नहीं किया है। हालांकि, <text> ब्लॉक, @ -prefixed ब्लॉक, और अधिक अच्छी तरह से फ़ॉर्मेट नहीं करते।

एक अन्य उदाहरण है, इस बार @ -prefixed ब्लॉक (निर्माणों और इस तरह के)

@foreach (var foo in bar) { 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    @foreach (var qux in foo.C) { 
     <div>@(qux.D)</div> 
     <div>@(qux.E)</div> 
    } 
} 

कम या ज्यादा ठीक है, ठीक लग रहा है? हाँ, दुर्भाग्यवश यह वास्तव में वाक्य रचनात्मक रूप से अमान्य है। @- आंतरिक foreach पर उपसर्ग की अनुमति नहीं है, क्योंकि यह बाहरी ब्लॉक (बाहरी foreach) के निर्बाध दायरे में होता है।

समाधान? भीतरी foreach से @ छोड़ देते हैं। जब मैं प्रारूप करता हूं तो क्या होता है?

@foreach (var foo in bar) { 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    foreach (var qux in foo.C) { 
    <div>@(qux.D)</div> 
    <div>@(qux.E)</div> 
    } 
} 

बहुत बढ़िया, आंतरिक इंडेंटेशन खो गया। पू।

ठीक है, कैसे उन <text> ब्लॉकों के बारे में, वे सही, कुछ के लिए उपयोगी होना चाहिए?निश्चित रूप से, <text> ब्लॉक में बाहरी foreach ब्लॉक की सामग्री को लपेटें। अब, जहां तक ​​रेजर का संबंध है, @- आंतरिक foreach का उपसर्ग करना वाक्य रचनात्मक रूप से मान्य है।

@foreach (var foo in bar) { 
    <text> 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    @foreach (var qux in foo.C) { 
     <div>@(qux.D)</div> 
     <div>@(qux.E)</div> 
    } 
    </text> 
} 

ठीक है, ठीक; हालांकि, यह काम करता है, यह मेरे मूल प्रश्न के मुद्दे का उदाहरण है। अब <text> ब्लॉक सामग्री इंडेंटेशन का पालन नहीं कर रहे हैं। क्यों हम सिर्फ नहीं कर सकते हैं:

@foreach (var foo in bar) { 
    <text> 
     <div>@(foo.A)</div> 
     <div>@(foo.B)</div> 
     @foreach (var qux in foo.C) { 
      <div>@(qux.D)</div> 
      <div>@(qux.E)</div> 
     } 
    </text> 
} 

या बेहतर अभी तक, <text> ब्लॉक पेंच और दूसरों के दायरे के भीतर @ -prefixed निर्माणों की अनुमति:

@foreach (var foo in bar) { 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    @foreach (var qux in foo.C) { 
     <div>@(qux.D)</div> 
     <div>@(qux.E)</div> 
    } 
} 

tl; डॉ

मुझे गुदा कॉल करें, मुझे पागल कहो। कोई फर्क नहीं पड़ता; जहां तक ​​मैं कह सकता हूं, यह प्रारूप मेरी स्वरूपण सेटिंग्स के बावजूद सही ढंग से काम नहीं कर रहा है।

क्या किसी को पता है कि वीएस 2010 रेजर स्वरूपण को वर्णित करने के लिए कैसे बल देना है? (या, मेरे ओसीडी के लिए यह सिर्फ कुछ पाइप सपना है?)

+1

यह सिर्फ सादा उदास है। इसका समाधान, और लगभग हर रेजर स्वरूपण मुद्दा यह है: ** अपने दस्तावेज़ को प्रारूपित न करें **। वाकई, वह बकवास है। इस तरह के मुद्दे, और [यह] (http://stackoverflow.com/questions/13829012/the-system-web-razor-api- दस्तावेज) मुझे लगता है कि वहां एक बहुत सारी समय सीमाएं हैं जो सिर्फ "मिल रही हैं" । – Dan

उत्तर

1

यह का संभावित हल होगा:

  1. सही cshtml फ़ाइल पर क्लिक करें
  2. साथ खोलें ...
  3. चुनें XML (Text) Editor
  4. प्रेस Ctrl + ई, डी
+0

+1 यह एक "समाधान" है;) - मैंने उल्लेख करने के लिए उपेक्षित किया है कि मुझे "सहेजने पर प्रारूप" के साथ कोडमेड मिला है, इसलिए मुझे दस्तावेज़ों को मैन्युअल रूप से प्रारूपित करने की आवश्यकता नहीं है। मुझे लगता है कि इस तरह से समस्या का हिस्सा है, कि जब मैं दस्तावेज़ों को प्रारूपित करता हूं तो मैं नियंत्रण भूल गया हूं। वैसे भी, सुझाव के लिए धन्यवाद, हालांकि मुझे नहीं पता कि यह एक व्यवहार्य, दीर्घकालिक समाधान है या नहीं। – Dan

संबंधित मुद्दे