रेजर में स्थानीय चर कैसे घोषित करें?


354

मैं asp.net mvc 3 में एक वेब एप्लिकेशन विकसित कर रहा हूं। मैं इसके लिए बहुत नया हूं। रेजर का उपयोग करते हुए, मैं कुछ स्थानीय चर घोषित करना चाहता हूं और पूरे पृष्ठ पर इसका उपयोग करना चाहता हूं। यह कैसे किया जा सकता है?

यह बल्कि निम्न कार्य करने में सक्षम होने के लिए तुच्छ लगता है:

@bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);
@if (isUserConnected)
{ // meaning that the viewing user has not been saved
    <div>
        <div> click to join us </div>
        <a id="login" href="javascript:void(0);" style="display: inline; ">join</a>
    </div>
}

लेकिन यह काम नहीं करता है। क्या यह संभव है?

जवाबों:


521

मुझे लगता है कि तुम बहुत करीब थे, यह कोशिश करो:

@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);}
@if (isUserConnected)
{ // meaning that the viewing user has not been saved so continue
    <div>
        <div> click to join us </div>
        <a id="login" href="javascript:void(0);" style="display: inline; ">join here</a>
    </div>
}

ओह, मैं चारों ओर हर संभव कोशिश कर रहा था, लेकिन यह। धन्यवाद टॉमस!
vondip

आप इसे VB.NET में कैसे करते हैं?
स्टीफन पॉल नैक

7
ओह, मुझे यह अपने आप पता चला: @Code .. End Codeइसके बजाय@{ .. }
स्टीफन पॉल नैक

1
@ Abhijeet.Nagre, सवाल में वह लिखते हैं: @bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);लेकिन चर परिभाषा "कोड ब्लॉक" के अंदर होनी चाहिए। मैं इस बात का बेहतर जवाब नहीं दे सकता कि तब क्यों, यह सिर्फ उस्तरा कैसे काम करता है।
टॉमस जानसन

2
@AhihijeetNagre - रेजर आमतौर पर यह समझने में काफी अच्छा है कि कोड कहां से शुरू होता है और खत्म होता है, लेकिन यह सही नहीं है। कभी-कभी हमें बस यह संकेत देना पड़ता है कि रेजर / सी # के रूप में क्या व्यवहार किया जाना चाहिए, और क्या नहीं होना चाहिए। यदि आपको कभी भी एक रेजर त्रुटि मिलती है, तो { }टैग जोड़ना आमतौर पर पहला कदम है
जॉन स्टोरी

50

मुझे लगता है कि चर एक ही ब्लॉक में होना चाहिए:

@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);
    if (isUserConnected)
    { // meaning that the viewing user has not been saved
        <div>
            <div> click to join us </div>
            <a id="login" href="javascript:void(0);" style="display: inline; ">join</a>
        </div>
    }
    }

ऐसा लगता है, कम से कम MVC3 में मामला है।
मैथ्यू वाल्टन

1
अति उत्कृष्ट! कोई भी विचार कि आप isUserConnectedपृष्ठ के नीचे फिर से चर का उपयोग कैसे करेंगे ?
शार्प

@SharpC एक बार जब आप वैरिएबल की घोषणा करते हैं तो यह उस .cshtml फ़ाइल में उपलब्ध होता है। बाद में फ़ाइल में आप कुछ ऐसा कर सकते हैं @if (isUserConnected) { /* stuff if connected */ }या <div>Connected? @isUserConnected</div>(यह स्ट्रिंग्स के साथ बेहतर काम करता है)। हालांकि यह उस फ़ाइल के बाहर उपलब्ध नहीं है (उदाहरण के लिए आपको इसे अलग से धारावाहिकों में घोषित करना होगा)।
Dan Mangiarelli


13

यदि आप एक इंटिरियर वैरिएबल की तलाश में हैं, तो कोड लूप्स के रूप में जो वृद्धि होती है, आप कुछ इस तरह से उपयोग कर सकते हैं:

@{
  int counter = 1;

  foreach (var item in Model.Stuff) {
    ... some code ...
    counter = counter + 1;
  }
} 

12

ओपी की समस्या का सीधा जवाब नहीं है, लेकिन यह आपकी मदद भी कर सकता है। आप परेशानी के बिना एक दायरे के अंदर कुछ HTML के बगल में एक स्थानीय चर घोषित कर सकते हैं।

@foreach (var item in Model.Stuff)
{
    var file = item.MoreStuff.FirstOrDefault();

    <li><a href="@item.Source">@file.Name</a></li>
}

यह वही है जो मैं आपको धन्यवाद देना चाहता था !!
Ninjanoel

2

पृष्ठ पर पहुँचने के लिए एक var घोषित करना। पृष्ठ के शीर्ष पर आमतौर पर यह काम करता है। स्पष्ट या स्पष्ट रूप से अपनी पसंद।

          @{
               //implicit
               var something1 = "something";
               //explicit
               string something2 = "something";
          }


            @something1 //to display on the page
            @something2 //to display on the page

1

आप एक ब्लॉक में सब कुछ डाल सकते हैं और आसानी से किसी भी कोड को लिख सकते हैं जो आप उस ब्लॉक में ठीक नीचे दिए गए कोड में चाहते हैं:

@{
        bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);
        if (isUserConnected)
        { // meaning that the viewing user has not been saved
            <div>
                <div> click to join us </div>
                <a id="login" href="javascript:void(0);" style="display: inline; ">join</a>
            </div>
        }
    }

यह आपको पहले एक क्लीनर कोड में मदद करता है और साथ ही आप अपने पेज को कई बार कोड के कई ब्लॉक लोड करने से रोक सकते हैं

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