2011-01-06 6 views
22

मेरे दृश्य में मेरे पास कुछ व्यवस्थापक लिंक हैं जो मैं उपयोगकर्ता भूमिका के आधार पर छिपाना और दिखाना चाहता हूं, यह दृश्य के अंदर कैसे कर सकता है उदा।एएसपी.नेट एमवीसी देखें

<%= if(CHECK IF USER ROLE ADMIN) { %> 
     <div class="tools"> 
      <ul> 
       <li class="edit"><%= Html.ActionLink("Edit", "Edit", new { id = Model.storyId }) %></li> 
       <li class="delete"><%= Html.ActionLink("Delete", "Delete", new { id = Model.storyId }) %></li> 
      </ul> 
     </div> 
<%= } %> 
+7

आप बस अपनी कार्रवाई में इस की जांच करते हैं और ViewData हैश में या एक के रूप में मूल्य डालने के लिए चाहते हो सकता है अपने विचारों को गूंगा रखने के लिए अपने व्यूमोडेल पर संपत्ति। – R0MANARMY

+0

मैं एक साधारण अगर कथन का उपयोग करके दृश्य के अंदर बस जांचना पसंद करूंगा। मैंने इसे पहले किया है लेकिन कोड को याद नहीं कर सकता। – Cameron

+1

सिर्फ इसलिए कि आपने इसे पहले किया है, यह एक अच्छा विचार नहीं बनाता है। किसी भी कोड को याद रखें (हालांकि मामूली) जिसे आप अपने विचार में डालते हैं वह कोड है जिसे आप कम से कम आसानी से परीक्षण या प्रतिबिंबित नहीं कर सकते हैं। रोब कॉनेरी ने कुछ समय पहले [टैग सूप से बचें] (http://blog.wekeroad.com/blog/asp-net-mvc-avoiding-tag-soup/) पर एक महान पोस्ट भी लिखा था। – R0MANARMY

उत्तर

22
<% if (Page.User.IsInRole("Admin")){ %> 

<%}%> 

हालांकि इस मेरी राय में एक भयानक विचार है। व्यूडेटा या मॉडल को प्रदर्शित करना बेहतर है कि दृश्य क्या प्रदर्शित करना है, और दृश्य केवल दृश्य डेटा को देख सकता है। एक नियंत्रक बेस क्लास या एक्शन फ़िल्टर इस बहुत सरल के दोहराव का उपयोग कर सकता है और कोड को एक ही स्थान पर मौजूद होने की अनुमति देता है।

+0

मैं आमतौर पर एक नियंत्रक से इस तरह की जानकारी भेजने के लिए एक ViewModel का उपयोग करें। हालांकि, मैं भूमिकाओं के आधार पर अपने मुख्य _Layout.cshtml में कुछ चीजों को प्रदर्शित करने की कोशिश कर रहा हूं। विचार कैसे "भयानक" है, और क्यों? क्या यह यहां एक वर्ग को जोड़ने और छिपाने के लिए दृढ़ता से टाइप किए गए आंशिक विचारों को बनाने के लायक होगा, या यह मेरे _Layout ठीक में एक सहायक विधि का चयन है? मैं सामान्यीकृत दावों के बारे में परेशान हो जाता हूं कि चीजें "भयानक विचार" हैं। – Methodician

+0

आप केवल व्यू मॉडल को परिभाषित कर सकते हैं कि नियंत्रक (या नियंत्रक द्वारा उपयोग की जाने वाली कक्षा) में अपनी सभी भूमिकाओं को दिखाने और काम करने के लिए क्या करें और दृश्य मॉडल को उचित रूप से असाइन करें। इसे सीधे जांचना अभी भी काम करता है लेकिन बड़ी परियोजनाओं में कम रखरखाव योग्य होगा और इससे निपटने के लिए दृश्यमान होगा। – CRice

+0

यदि आप इसके लायक हैं या आपकी स्थिति के आधार पर कॉल कर सकते हैं तो आप कॉल कर सकते हैं। – CRice

0

मैं अधिकतर लोगों से सहमत हूं कि यह डेटा नियंत्रक या अन्य व्यावसायिक सेवाओं द्वारा "पूर्व-निर्धारित" प्रदान किया जाना चाहिए, जबकि व्यू बस जितना संभव हो सके, एचटीएमएल मार्कअप और भाषा नियंत्रण संरचनाओं का उपयोग करता है इस तरह के jQuery, सीएसएस, आदि आदि के रूप में अन्य विशिष्ट वेब पेज निर्माण उपहार का उपयोग कर "पृष्ठ बाहर मांस"

+1

मैं आपके बयान को काफी समझ नहीं पा रहा हूं, क्या आप फिर से बदल सकते हैं? –

38
@if (this.User.IsInRole("Administrator")) 
{ 

} 
+2

यह स्वीकार्य उत्तर होना चाहिए। इसका उपयोग कर –

+1

। इस मुद्दे को हल किया – PAVITRA

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