使用SignalR

时间:2015-11-07 06:42:43

标签: jquery asp.net-mvc signalr

我正在使用SignalR 1.1.3在我的asp.net mvc 4项目中发布实时通知。我能够在消息框中添加新消息,但我无法更新新消息计数器。以下是我更新新邮件计数器的代码,

jQuery脚本

    $(function () {
        var chat = $.connection.chatHub;
        var notifyVal = $('.notification-red').val();
        var newVal = notifyVal + 1;
        chat.client.addNewMessageToPage = function () {
            $('#newItem').append(
                '<span class="notification-red">' + newVal + '</span>');
        };
        $.connection.hub.start().done(function () {
            $('#btnSend').click(function () {
                chat.server.send();
            });
        });
    });

HTML

<ul id="newItem" class="nav navbar-top-links navbar-right">
    <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                <i class="fa fa-envelope fa-fw"></i><i class="fa fa-caret-down"></i>
                @{
                    int count = 0;   
                 }
                @foreach (var item in MsgList)
                {
                    if (Html.DisplayFor(modelItem => item.status).ToString() == "Unread")
                    {
                        count++;
                    }
                    <span class="notification-red">@count</span>
                }
        </a>
    </li>
</ul>

这里发生的是每当我从另一方发送消息而不是更新计数器号时,新计数器会附加。如何仅更新SignalR的每次点击次数?非常需要这个帮助。感谢。

2 个答案:

答案 0 :(得分:0)

变化:

$('#newItem').append('<span class="notification-red">' + newVal + '</span>');

类似于:

$('.notification-red').html(newVal);

答案 1 :(得分:0)

假设您使用此标记来反驳计数器:

<span id="notificationCounter"></span>

现在数据准备好后,您可以递增计数器:

chat.client.addNewMessageToPage = function () {
    $('#notificationCounter').html(parseInt($('#notificationCounter').html(), 10) + 1);
};