1

我是网页设计的新手(使用 ASP.net MVC4/Razor),有时互联网上的信息太多了,我已经用谷歌搜索了 2 个小时,我为我的问题找到了很多不同的答案,但我不知道哪一个是最好的,所以我会在这里问它:

我有一个数据库(首先是 EF 代码),它有一个从不同位置插入的日志表。但是我想制作一个页面,在该页面上它应该始终显示最后 20 行。

于是我google了一下,发现:

  • 微软的ajax?

  • jQuery 阿贾克斯?

  • 不显眼的阿贾克斯?

  • SignalR 与 Jquery?

  • 网络套接字?

  • 将 ajax 与模板一起使用?

我敢肯定,会有一些选项比其他选项更好,或者可能是我尚未提到的选项。有人可以告诉我应该深入哪个方向来获得我想要的东西。(我不想得到所有的代码,我只需要一些指导,因为我在太多的选项中有点迷失了+-)

编辑

我会指定更多,我知道我必须创建一个 API 来获取 JSON 之类的东西

public JsonResult GetLast20LogRows()
{
  ...
  return listoflast20rows; //(as List<DatabaseLog>()) 
}

我只是不知道HTML/Javascript/ajax标准以及如何让它刷新 HTML 而无需刷新整个页面。(Ajax)

编辑2:

服务器端代码:

ChatBotLog.cs(EF代码优先):

  public class ChatBotLog
    {
        [Key]
        public int Id { get; set; }
        public DateTime? Date { get; set; }
        public ServerRegion Region { get; set; }
        public string Text { get; set; }
    }

现在我想要一个 .cshtml(剃须刀页面)来获取显示最后 20 行的方法,我将让该方法快速获取最后 20 行:

public JsonResult GetLastLogRows()
{
     using (var db = new MyDb())
     {
         var listlog = db.ChatBotLogs.OrderByDescending(x => x.Date).Take(20);
         return Json(listlog);
     }
}

我认为这是我应该根据我所阅读的内容制作的方法,无论如何请告诉我如果我错了,我还在寻找一种在视图上显示它的方法,我应该使用什么类型的ajax,它没有必须是“实时直播”,但喜欢每 5 秒刷新一次数据。

希望你现在能更好地理解,我被困在哪里。

4

1 回答 1

1

我认为您的问题可以通过一种如此简单的方法来解决:

1- 创建一个 jQuery 函数,该函数将从您的 Web 服务器中提取数据示例:

function GetLatestLogEntries()
{
    var latestLogEntries;

    $.ajax({
                 type: "GET",
                 url: "/{RootFolder}/GetLast20LogRows",                   
                 dataType: "json",
                 success: function (e) {
                     latestLogENtries = e.data;  

                     // here you will need to format the log entries according to your needs, for example
                     $("#divLogContainer").html(latestLogENtries);

                 }
          });
    }

2-将以下代码放入您的脚本标签中,以确保在加载所有页面元素后执行它

$(function(){
       setInterval(GetLatestLogEntries(),5000);
})

3-微笑:)

这将每 5 秒执行一次GetLatestLogEntries函数,您的页面将被最新的 20 个条目更新

如果您需要进一步的解释,请随时评论此答案

希望这可以帮助 :)

于 2013-02-03T13:43:50.723 回答