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

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック X

undefined ここをクリック 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に1回追加します。これははるかに高速です。

これがあなたが抱えている問題を解決することを願っています。

于 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 に答える