如何让 ASP.NET 中的按钮仅对管理员可见?

How to make buttons visible only for admin in ASP.NET?

所以我有一个视图,例如电影列表(在 table 中)。

所以现在我想在每个位置都有一个像 removeedit 这样的按钮,但只有在登录管理员帐户时才可见。

Should I make 2 controllers and 2 views (one for admin, one for regular user) ?

您可以使用 1 个控制器和 1 个视图,或 1 个控制器和 2 个视图,或 2 个控制器和 2 个视图。这取决于您从每个选择中获得多少代码重用以及您计划的可扩展性类型。如果管理员获得很多附加功能,and/or 它需要页面以不同的方式布局,您可能想要使用 2 个视图和 1 个控制器。

Is there any way to share the same view with some hidden options like edit and remove for user ?

是的。只需将条件控件包含在 if 语句中(例如 if (IsUserInRole("Administrator") {@Html.ControlFor(m => m.Something)}。根据页面的布局,可能更容易包含整个 DIV 而不是逐个控制地工作。

除了使用角色来限制呈现的控件之外,您还必须限制可以调用的操作(即,将代码添加到检查角色的操作处理程序)。否则,恶意用户可以欺骗与隐藏控件关联的 HTTP 流量,并做一些他不应该做的事情。

Is there any better way to do it than IsUserInRole("Administrator")

不,不是真的。您可以编写一些调用 IsUserInRole 的扩展方法或其他函数,但在您的代码中的某个地方,您将不得不在某个时候调用它。