【问题标题】:How can I disable the view of a page for other users?如何禁用其他用户的页面视图?
【发布时间】:2015-01-24 16:49:27
【问题描述】:

我希望我的应用程序的用户启用或禁用其他用户查看某个页面。为此,我需要一个应用程序变量,一个布尔值,无论用户决定为其他用户启用还是禁用视图。

我想要的功能是:当我单击按钮以禁用页面视图时(对于连接到站点的其他用户),以及当我按下返回以启用它时。

我可以通过使用数据库来实现这一点,通过将表中字段的值更改为真或假。但是这种方法无效且不优雅。

谁能告诉我如何在不使用数据库的情况下实现这一目标?是否有任何应用程序变量/会话变量/或 cookie 来实现这一点?有什么我应该在 Global.asax 中写的吗?

我使用 ASP.NET MVC 4..

请帮忙!

【问题讨论】:

  • 您能否具体说明,您进行的哪些试验没有产生预期的结果?您是否尝试使用缓存来减少数据库访问次数?
  • 我确实将值存储在数据库中,其中一个表和一个字段的值为真或假。我不想为这个功能在我的数据库中创建一个包含一个字段的表。我正在尝试寻找另一种方法来解决这个问题......一个更优雅的......我的有点硬编码......
  • 为什么我被否决了?我认为这是一个合理的问题......
  • 如果你想持久化这个值,你必须将它存储在某个地方,无论是数据库还是 xml 文件。会话不好,因为这是每个用户的(另一个用户无法访问它)
  • Cookie 也是每次使用的。其他用户如何知道您的 cookie 值,反之亦然?

标签: asp.net asp.net-mvc asp.net-mvc-4 user-roles


【解决方案1】:

在你的控制器中声明“静态变量”说

static bool disableViewPage;

在某些操作中单击按钮时设置此值。

例子:

public class SomeViewController : Controller
{
   [HttpPost]
   public ActionResult DisableView(bool value)// on button click
   {
      SecondController.DisableViewPage=value;
      return View("<SomeView>")
   }

}

public class SecondController : Controller
{
   public static bool DisableViewPage;
   // your views

}

【讨论】:

  • 问题是我拥有按钮的控制器与我拥有将被禁用的页面的控制器不同......
  • 您可以使用类名访问该变量。因为它是静态的和公开的。
  • @SeeTheC 问题是一种优雅的方法,分配控制器属性等不是一个好习惯,因为实例化和依赖注入(如果使用)等会搞砸。
  • 我无法将值保存在静态变量中,因为我需要持久数据。即使关闭会话,我也需要禁用该页面。
  • 在我的一个申请人中,我使用 Db 和静态类对象。我需要在本地缓存很多价值。所以我所做的是,在应用程序开始时,我从 DB 中获取所有值并存储在这个静态对象中以避免多个 DB 提取。每当值发生变化时,我都会更新我的对象以及 Db
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多