在MVC3網站的默認安裝中,標籤是在左上角創建的。我想根據當前用戶是否有權訪問索引ViewResult來隱藏/顯示這些選項卡。 ViewResult允許的角色由屬性定義。有沒有辦法獲得ViewResult的角色列表?如何根據MVC3中的屬性中定義的角色隱藏選項卡?
7
A
回答
10
如果你問(對不起,是不完全清楚,我)約基於角色的HTML元素的條件顯示,你可以做這樣的事情:
@if (User.IsInRole("Administrators"))
{
@Html.ActionLink("Do Some Action", "DoAction", "SomeController")
}
如果不是你在問什麼,讓我知道。
後續根據您的評論:
你的問題讓我感興趣的,我做了一個小閒逛,發現費雯麗CHEVALLIER有一個有趣的想法here基本上可以讓你寫的東西,像這樣:
@Html.ActionLinkAuthorized("The Privilege Zone", "ThePrivilegeZone", "Home", true)
,然後這個檢查控制器的動作,要麼呈現一個鏈接或沒有。
在他的控制例子,你有一個這樣的動作:
[Authorize(Roles = "Administrator")]
public ActionResult ThePrivilegeZone()
{
return View();
}
(我想這裏的關鍵是,你的視圖不知道蹲關於「管理員」和依賴於擴展代碼做繁重的位置:
public static MvcHtmlString ActionLinkAuthorized(
this HtmlHelper htmlHelper,
string linkText, string actionName, string controllerName,
RouteValueDictionary routeValues,
IDictionary<string, object> htmlAttributes, bool showActionLinkAsDisabled)
{
if (htmlHelper.ActionAuthorized(actionName, controllerName))
{
return htmlHelper.ActionLink(
linkText,
actionName, controllerName, routeValues, htmlAttributes);
}
else
{
if (showActionLinkAsDisabled)
{
TagBuilder tagBuilder = new TagBuilder("span");
tagBuilder.InnerHtml = linkText;
return MvcHtmlString.Create(tagBuilder.ToString());
}
else
{
return MvcHtmlString.Empty;
}
}
}
不是剪切/粘貼代碼的全部,在這裏,你可以看看,看看他有該示例應用程序,我認爲有什麼特別有趣的這個方法是查看可能是顯示PrivilegeZone鏈接,但只知道別的東西會確定是否是這種情況。因此,假設你有新的要求,只允許「管理員」或「所有者」的人訪問鏈接,則可以相應地修改控制器操作,而不是觸摸視圖代碼。有趣的想法,至少對我來說。
相關問題
- 1. 如何根據用戶角色在java中隱藏選項卡
- 2. 如何隱藏TabActivity中的選項卡?
- 3. 如何根據角色的屬性顯示和隱藏指令內的元素
- 4. TabLayoutPanel - 根據角色顯示選項卡
- 5. 如何隱藏Android選項卡布局中的選項卡?
- 6. 如何根據IronPython中的當前用戶「隱藏」Spotfire中的選項卡?
- 7. 如何在ext4.1中隱藏選項卡?
- 8. 根據MVC中的角色隱藏表中的列
- 9. NetSuite隱藏基於角色的表單選項卡
- 10. 隱藏空屬性組屬性選項卡
- 11. 我被卡在javascript中,隱藏/激活選定的選項卡
- 12. 根據角色隱藏鏈接
- 13. MVC3 Json函數隱藏特定屬性
- 14. 在iphone中如何根據用戶角色顯示不同的選項卡
- 15. MVC3額外角色屬性
- 16. 如何隱藏網址在Chrome中的自定義選項卡的Android
- 17. 如何根據AngularJS中的選項值隱藏表格行?
- 18. 如何隱藏tabBarController的選項卡?
- 19. 如何根據當前用戶的角色隱藏WebGrid列?
- 20. 如何隱藏選定項目中的tabbar白色陰影
- 21. Flex:隱藏TabNavigator中的選項卡
- 22. 隱藏java中的選項卡標題
- 23. TabNavigator中的Flex隱藏選項卡
- 24. 根據selectOneMenu的值通過ajax顯示和隱藏primefaces選項卡 - 隱藏選項卡而不更新tabview
- 25. 根據WPF中的用戶角色顯示/隱藏控件
- 26. 選項卡式活動中的隱藏選項卡標題
- 27. 如何隱藏在android中的選項卡組中的特定選項卡中的操作欄?
- 28. 想要隱藏使用jQuery的選項卡(數據選項卡)?
- 29. 根據用戶的位置隱藏Facebook選項卡
- 30. 如何根據角度js中的複選框選擇顯示/隱藏div
你的問題沒有很好的解釋,你能問一下嗎? – IamStalker