用c#发送通知消息

本文关键字:通知 消息 | 更新日期: 2023-09-27 18:01:48

我必须在c#中开发一个已经建立的Windows窗体应用程序,作为我学习的一部分。该应用程序的工作方式如下。此应用程序将用于由执行人员及其经理组成的工作场所部门。管理人员将对各种问题的某些发现进行研究,一旦他们调查了一个发现,这个应用程序就可以上传该发现。但是,要公布调查结果,必须得到部门经理的批准。我的任务是设置一个按钮,该按钮应该工作,因为一旦按下该按钮,经理应该收到通知消息,例如"您有一个来自"执行名称"的审批结果"。管理人员将使用他们的用户名和密码登录系统,经理也有单独的用户名和密码。主管和经理将在同一台服务器上,如果经理在发送通知时没有登录到应用程序,则应该在他登录到应用程序时显示。
有人知道在c#中发送这类通知消息的细节吗?我在谷歌做了很多尝试,但都没有成功。如果有人能在这方面帮助我,我很感激。

用c#发送通知消息

似乎在这种情况下使用事件是好的。当按钮被按下时,按钮被按下的事件被引发,由于经理和执行人员订阅了该事件,他们将收到通知

 this.yourButton.Click += new System.EventHandler(ManagerEventHandler);
 this.yourButton.Click += new System.EventHandler(ExecutiveEventHandler);
private void ManagerEventHandler(object sender, EventArgs e)
{
//TODO
}
private void ExecutiveEventHandler(object sender, EventArgs e)
{
//TODO
}

为此,您需要为"消息"或"通知"创建一个数据库抽象。模式可能如下所示:

Messages
--------
Id  uniqueidentifier not null primary key
UserId  uniqueidentifier not null
IsRead  bit null
Text  varchar(MAX) null

因此,当读取消息时,您将发送(可能)一个AJAX请求来更新IsRead字段,以显示该消息已被读取。您还可以使用AJAX检查用户是否有尚未读取的消息,并在UI上显示它们。

如果您还有其他问题,请告诉我们。

编辑:如何使用AJAX与MVC和jQuery。

在你的控制器中创建这样一个动作:

[Authorize]
public JsonResult GetMessagesForUser()
{
    // get user ID
    Guid userId = YourIdentityProvider.User.Id;
    // check messages like this:
    var messages = from m in ctx.Messages
                    where m.UserId == userId
                    && m.IsRead == false
                    select m;
    return Json(messages.ToList(), JsonRequestBehavior.AllowGet);
}

然后,在您的视图中,每隔几秒钟检查一次新消息,如下所示:

setTimeout(function() {
    $.ajax({
        url: '@Url.Action("GetMessagesForUser")',
        type: 'get',
        dataType: 'json',
        success: function(data) {
            console.log(data); // new messages
        }
    });
}, 3000);