ASP.NET MVC रेजर कॉन्टेनेशन


95

मैं एक HTML सूची रेंडर करने की कोशिश कर रहा हूं जो रेजर व्यू इंजन का उपयोग करते हुए, निम्न की तरह दिखता है:

<ul>
  <li id="item_1">Item 1</li>
  <li id="item_2">Item 2</li>
</ul>

इस सूची को प्रस्तुत करने के लिए मैं जिस कोड का उपयोग करने का प्रयास कर रहा हूं वह है:

<ul>
@foreach (var item in Model.TheItems)
{            
  <li id="item_@item.TheItemId">Item @item.TheItemId</li>
}
</ul>

पार्सर घुट रहा है, क्योंकि यह सोचता है कि आईडी विशेषता में अंडरस्कोर के दाईं ओर सब कुछ सादे पाठ है और इसे पार्स नहीं किया जाना चाहिए। मैं कैसे Parser को TheItemId रेंडर करने का निर्देश देने के बारे में अनिश्चित हूं।

मैं मॉडल ऑब्जेक्ट पर एक आइटम नहीं चाहता, जिसमें आइटम_ उपसर्ग शामिल है।

मुझे इस सिंटैक्स को भी रखना है क्योंकि मैं सूची का उपयोग JQuery सॉर्टेबल के साथ कर रहा हूं और क्रमबद्ध फ़ंक्शन के साथ इस सिंटैक्स में आईडी विशेषता को स्वरूपित करने की आवश्यकता है।

जवाबों:


208

आपको कॉल के आंतरिक भाग को इसके साथ लपेटना चाहिए ( ):

<li id="item_@(item.TheItemId)">

3
मैंने String.Format के साथ शुरुआत की, लेकिन आपकी प्रतिक्रिया के वाक्यविन्यास और संक्षिप्तता को पसंद करता हूं, मैं इसे अपने पसंदीदा उत्तर के रूप में चिह्नित कर रहा हूं।
डेविड मार्चेला

मैं विजुअल स्टूडियो 2013 और ASP.NET MVC 5 का उपयोग कर रहा हूं, और यह काम नहीं कर रहा है (स्ट्रिंग को और कोष्ठक सहित ) सेट किया गया है@ ... आखिरकार मेरे लिए जो काम किया वह बहुत ही अपमानजनक था id="foo" + Model.Bar
इयान कैम्पबेल

इसने मुझे कोष्ठक में चर दिया। ऐसा प्रतीत होता है कि रेजर अब समझता है कि एक अंडरस्कोर + एक चर = एक स्ट्रिंग + एक चर।
ह्यूग सीग्रेव्स

26

कैसे String.Format का उपयोग करने के बारे में ? इस तरह:

<li id="@String.Format("item_{0}", item.TheItemId)">


यह सही ढंग से पार्स नहीं कर रहा है, नेस्टेड डबल-कोट्स के कारण ... क्या आंतरिक उद्धरण सिंगल-कोट्स और बाहरी डबल-कोट्स, कुछ होना चाहिए id="@String.Format('foo{0}', item.Bar)"?
इयान कैम्पबेल

10

मैं पसंद करता हूं:

<li id="@String.Concat("item_", item.TheItemId)">

वाचालता समर्थन डेवलपर्स को वास्तव में वही बताती है जो हो रहा है, इसलिए यह स्पष्ट और समझने में आसान है।


2

तुम भी इस तरह का उपयोग कर सकते हैं और अधिक तार concat :

<li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>

यहाँ एक और पोस्ट है।

आशा किसी की मदद करती है।



0

यह पोस्ट पुरानी प्रतीत होती है लेकिन अब यह नवीनतम MVC में अब काम करती है:

id="item_@item.TheItemId"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.