/ दृश्यों में / भूमिका विशिष्ट नियंत्रण - asp.net, asp.net-mvc-5, asp.net-identity

दृश्य में विशिष्ट नियंत्रण - asp.net, asp.net-mvc-5, asp.net-identity

मैं एक उपयोगकर्ता की भूमिका के आधार पर नियंत्रण को छिपाने की कोशिश कर रहा हूं। मैं जैसे कुछ करने में सक्षम हुआ करता था

@if (User.IsInRole("Admin"))
{Html.ActionLink("RolesAdmin", "Index", "RolesAdmin")}

देखने में, लेकिन यह काम नहीं करता है। अब बहुत खुदाई के बाद मैंने पाया कि आइडेंटिटी 2.0 नहीं है।

क्या अब भी कुछ है जो मैं सीधे व्यू से उपयोग कर सकता हूं? या मैं यह पूरी तरह से गलत कर रहा हूँ?

उत्तर:

जवाब के लिए 0 № 1

यह अभी भी ठीक काम करना चाहिए, क्योंकि पहचान के नमूने वर्तमान में "एडमिन्स" के लिए केवल शीर्ष स्तर लिंक प्रदर्शित करने के लिए कुछ इसी तरह कर रहे हैं

            @if (Request.IsAuthenticated && User.IsInRole("Admin")) {
<li>@Html.ActionLink("RolesAdmin", "Index", "RolesAdmin")</li>
<li>@Html.ActionLink("UsersAdmin", "Index", "UsersAdmin")</li>
}

जवाब के लिए 0 № 2

इस प्रकार के तर्क को एक नियंत्रक के अंदर रखा जाना बेहतर है, प्रतिपादन के लिए विचार छोड़ दें।

आप अपने नियंत्रक में ChildActions के संयोजन के साथ Html.Action का उपयोग कर सकते हैं और उपयोगकर्ताओं की भूमिका के आधार पर आंशिक विचार प्रस्तुत कर सकते हैं।

मैंने कुछ समय पहले इसी तरह का प्रश्न पोस्ट किया था और लगता है कि यह आपके लिए उपयोगी होगा।

भूमिका आधारित नेविगेशन

-EDIT-

स्पष्टीकरण के लिए, यह नए ASP.NET पहचान का उपयोग करके काम करता है

यह लेआउट में जाएगा

@Html.Action("BuildNavigation", "Component")

और यह आपका नियंत्रक होगा।

public class ComponentController : Controller
{

[ChildActionOnly]
public ActionResult BuildNavigation()
{

if (this.User.IsInRole("customer"))
{
return PartialView("_NavigationCustomer");
}
else
{
return PartialView("_NavigationBasic");
}


}
}

यह आपको सही दिशा में जा रहा है।