/ / रेज़र सिंटैक्स: नेस्टेड स्टेटमेंट्स और वेरिएबल स्कोपिंग की समस्या

रेजर सिंटैक्स: नेस्टेड कथन और परिवर्तनीय दायरे को समझने में समस्या - सी #, एएसपीनेट-एमवीसी -3, रेज़र

मुझे रेजर सिंटैक्स का पता लगाने में परेशानी हो रही है औरचर गुंजाइश कैसे काम करती है। मैं सामान्य रूप से C # के साथ-साथ रेजर सिंटैक्स के लिए नया हूँ। यहाँ कुछ कोड है जो मैंने समानांतर बनाए हैं जो मैं करना चाहता हूँ, बस थोड़ा सरल है।

मेरे पास एक सरणी है जिसका प्रतिनिधित्व किया है ViewBag.Photos हालांकि मैं अपने UI कोड में प्रदर्शित करना चाहता हूं। हालाँकि, पहली फोटो के लिए, मुझे एक विशिष्ट द्वितीयक वर्ग नाम जोड़ना होगा active मेरे UI कोड के लिए (एक jquery प्लगइन का उपयोग करके) ठीक से प्रदर्शित करने के लिए क्योंकि यह जानना आवश्यक है कि पहली तस्वीर क्या है।

मैं क्या गलत कर रहा हूं और इसे पूरा करने का सबसे अच्छा तरीका क्या है?

<div class="foo">
@{int i = 1;}
@foreach (var photo in ViewBag.Photos)
{
if (i == 1) {
<div class="item active">
}
else {
<div class="item">
}
<img src="/images/@photo" alt="@ViewBag.SomeVar">
<div class="bar">
<p>Test</p>
</div>
</div>
@{i++};
}
</div>

उत्तर:

उत्तर № 1 के लिए 1
<div class="foo">
@{
int i = 1;
@foreach (var photo in ViewBag.Photos)
{
if (i++ == 1) {
<div class="item active">
}
else {
< div class="item">
}
<img src="/images/@photo" alt="@ViewBag.SomeVar">
<div class="bar">
<p>Test</p>
</div>
</div>

}
}
</div>

या

    <div class="foo">
@{
int i = 1;
var className = "item";
@foreach (var photo in ViewBag.Photos)
{
className = i++ == 1 ? "item active" : "item";
<div class="@className">
<img src="/images/@photo" alt="@ViewBag.SomeVar">
<div class="bar">
<p>Test</p>
</div>
</div>

}
}
</div>

उत्तर № 2 के लिए 1

आपको फ़ॉर्चेशन के बजाय कथन के लिए उपयोग करना चाहिए।

<div class="foo">
@for(int i = 0; i < ViewBag.Photos.Count; i++)
{
<div class="@((i == 0) ? "item active" : "item")">
<img src="/images/@ViewBag.Photos[i].Photo" alt="@ViewBag.Photos[i].AltText">
<div class="bar">
<p>Test</p>
</div>
</div>
}
</div>

मुझे लगता है कि फ़ोटो कुछ वर्ग की एक सरणी है जो फ़ोटो और ऑल्ट टेक्स्ट दोनों को लपेटता है। यदि नहीं, तो आप ऐसा कुछ करेंगे:

<img src="/images/@ViewBag.Photos[i]" alt="@ViewBag.AltText[i]">

हालाँकि आपको वास्तव में एक दृश्य मॉडल का उपयोग करना चाहिए। आप शायद DisplayTemplate का उपयोग करके भी बेहतर करेंगे। लेकिन आपको शुरू करना चाहिए।

अद्यतन: मैं सशर्त ऑपरेटर का उपयोग करके उपरोक्त के रूप में कोड लिखूंगा। मुझे लगता है कि यह पढ़ना आसान है, और कम भ्रामक है।