c#linq对象到javascript输出

c# linq object to javascript output

本文关键字:输出 javascript 对象 c#linq      更新时间:2023-09-26

在我的信号器应用程序中,我使用以下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>");
            }
        };

获取输出:-

safafasfa点击这里X

未定义点击此处X

未定义点击此处X

未定义点击此处X

未定义点击此处X

未定义点击此处X

未定义点击此处X

未定义点击此处X

未定义点击此处X

未定义点击此处X

未定义点击此处X

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

只需更改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);

将代码更改为以下。。。

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中添加一次。这要快得多。

希望这能解决你的问题。