2013-02-19 28 views
39
@if (Request.IsAuthenticated && User.Identity.Name=="administrator") 
{ 
    <div id="sidebar"> 
     <div class="module"> 
     <ul class="menu"> 
          <li>@Html.ActionLink("Home", "Index", "Home")</li> 
          <li>@Html.ActionLink("About", "About", "Home")</li> 
          <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
         </ul> 
     </div> 
     <div class="mainContent"> 
      Hello, @User.Identity.Name ! 
     </div> 
    </div> 

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

यहाँ, controler विधि

public ActionResult AuthenticatedUserLayout(string username) 
    { 
     var lst=userContext.UserProfiles.ToList(); 
     var user = lst.Select(u => u.UserName == username); 

     if(IsAdmin(Session["LoginUser"].ToString())) return View(user); else return Index(); 
    } 

मैं भी पाते हैं कि return View(user) अच्छा नहीं है।

+2

'@if (Request.Is प्रमाणीकृत और उपयोगकर्ता। IsInRole (" व्यवस्थापक "))' – codingbiz

उत्तर

89
@if (Request.IsAuthenticated && User.IsInRole("Administrators")) 
{ 
    <div id="sidebar"> 
     <div class="module"> 
      <ul class="menu"> 
       <li>@Html.ActionLink("Home", "Index", "Home")</li> 
       <li>@Html.ActionLink("About", "About", "Home")</li> 
       <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
      </ul> 
     </div> 
     <div class="mainContent"> 
      Hello, @User.Identity.Name ! 
     </div> 
    </div> 
} 
12

डेव का जवाब सही है। मैं सुझाव दूंगा कि आप IsAdministrator या CanSeeSidebar नामक अपने मॉडल पर एक संपत्ति का उपयोग करने पर विचार करें और डोमेन तर्क के रूप में उस प्रश्न का उत्तर देने का इलाज करें।

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

+0

यदि आप इसे साझा दृश्य पर रखना चाहते हैं तो यह मुश्किल नहीं है - जो कि नेविगेशन के साथ आप निश्चित रूप से करेंगे? – niico