【问题标题】:How do you handle a user notification popup "ribbon" - similar to SO's?您如何处理类似于 SO 的用户通知弹出“功能区”?
【发布时间】:2010-07-15 04:07:54
【问题描述】:

在我的 asp.net MVC 应用程序中,我正在计划一个类似于 SO 的用户通知系统。这是我正在考虑的表结构:

Message table
--------------------------------
PK  MsgId     BigInt
FK  UserId    UniqueIdentifier
    Body      nvarchar(200)
    IsRead    TinyInt
    DateSent  DateTime

首先,这个数据库结构看起来好吗?有没有更好的办法?

顶部的功能区将显示用户有未读消息。当用户访问该消息的页面时,该消息会自动变为已读(无需单击“标记为已读”按钮。[将 IsRead 字段更改为 1]

将功能区构建为在有未读消息时始终可见很容易。 您如何构建它以让用户隐藏功能区,即使他们有未读消息 - 然后不在用户访问的下一个内部页面上加载功能区?

【问题讨论】:

  • 如果您使用的是 SQL Server,请使用 bit 数据类型而不是 TinyInt 来表示 IsReadIsAcknowledged

标签: c# sql asp.net-mvc user-interface notifications


【解决方案1】:

我会添加一个类似于“IsAcknowledged”的标志,因此只有在!IsRead && !IsAcknowledged 时才能显示功能区,然后在用户单击“x”或其他任何内容时使用 AJAX 更新标志。这样,IsRead 标志就会保持不变,因此当用户选择查看他的消息时,您仍然知道哪些消息没有被阅读。

另外,不确定您使用的是什么 DBMS,但对于 MSSQL 中的布尔字段,我喜欢使用 bit 类型。

【讨论】:

  • 哦,对不起...这有点类型 - 不知道我为什么要写 tinyint。 ;D 对 IsAcknowledged 领域的良好呼吁......我有一个“呃!”刚才的那一刻。非常感谢。
【解决方案2】:

有很多 jquery 插件可以让你拥有这个漂亮的动画通知栏,例如 jGrowljBar。只需选择其中一个,尝试一下,如果您在实施时遇到问题,请随时提出。

【讨论】:

  • jBar 或 jGrowl 是否处理用户关闭功能区时不显示功能区的问题(即使有未读消息)?防止功能区在每个其他页面访问时弹出...
猜你喜欢
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2020-06-10
  • 1970-01-01
相关资源
最近更新 更多