我是MVC的新手。我希望能够为一些用户隐藏一些动作链接。假设我有一个"create“操作链接,我只想让管理员看到并点击它。我想使用asp.net中提供的某种"loggedintemplate“,但它在razor中似乎不起作用。
我可以使用某种带有if语句的代码块来检查当前用户及其角色,但这可能不是最佳实践?
我的index.cshtml..
// want some adminauth attribute here...
@Html.ActionLink("Create New", "Create")
我的控制器..
// GET: /Speaker/Create
[Authorize(Roles = "Administrators")]
public ActionResult Create()
{
return View();
}
发布于 2011-08-08 20:14:12
我在过去创建了一个helper函数,当满足以下条件时才返回输出:
public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
{
return evaluation ? value : MvcHtmlString.Empty;
}
因此,您可以使用以下命令:
@Html.ActionLink("Create New", "Create").If(User.IsInRole("Administrators"))
这样写起来既清晰又简短
发布于 2011-08-08 20:43:23
如果你想要一个代码块,在视图中就可以了:
@if (Roles.IsUserInRole("Administrators"))
{
<li>@Html.ActionLink("Create New", "Create")</li>
}
发布于 2011-09-11 10:02:31
我已经修改了Richard的代码,以便提供一个可选的MvcHtmlString参数,以便在计算结果为false时返回。
public static MvcHtmlString If(this MvcHtmlString value, bool evaluation, MvcHtmlString falseValue = default(MvcHtmlString))
{
return evaluation ? value : falseValue;
}
https://stackoverflow.com/questions/6981853
复制相似问题