0

在我的信号器应用程序中,我使用以下 Hub 方法发送通知:- C# 代码:-

 public void Updatecid(int uid, string connid)
    {
        var ntf = ege.notifications.Where(u => u.UserID == uid).ToList();
        Clients[connid].addData(ntf);
    }

Javascript代码客户端:-

connection.addData = function (data) {
            for (var i = 0; i < data.length; i++) {
                var element = data[i];
                $('#notiadd').append("<li>" + element.NotificationTitle + "<a href='" + element.NotificationLink + "'>Click Here</a><input type='hidden' value='" + element.ID + "' /> <a href='#' class='delnoti'>X</a> </li>");
            }
        };

获取输出:-

safasfasfa 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

未定义 点击这里 X

您可以在输出中检查只有第一个通知即将到来,并且未定义。我在发送完整数据的 C# 代码中调试应用程序,但 javascript 会产生一些输出错误。

4

2 回答 2

0

将您的代码更改为以下...

connection.addData = function (data) {
  // console.log("data", JSON.stringify(data)) // Print the output to the console
  var html = $.map(data, function (i, element) {
    return "<li>" + element.NotificationTitle + "<a href='" + element.NotificationLink + "'>Click Here</a><input type='hidden' value='" + element.ID + "' /> <a href='#' class='delnoti'>X</a> </li>";
  }).join("");

  $("#notiadd").append(html);

};

在此解决方案中,您预先创建所有 html 并将一次添加到 DOM。这要快得多。

希望这可以解决您遇到的问题。

于 2012-07-14T12:22:33.413 回答
0

只需更改 C# 代码:-

var ntf = ege.notifications.Where(u => u.UserID == uid).ToList();
        var collection = ntf.Select(x => new
        {
            ntitle = x.NotificationTitle,
            nlink = x.NotificationLink,
            nid = x.ID
        });
        Clients[connid].addData(collection);
于 2012-07-15T05:23:30.850 回答