突出显示表中的更改(ASP / MVC5)

时间:2015-03-06 09:32:41

标签: asp.net asp.net-mvc asp.net-mvc-5

我正在开发一个旨在显示股票报价的Web小应用程序。

为此,我创建了一个控制器(TradingController),用于检索服务层的所有引号。

public class TradingController : Controller
{
    private readonly IQuoteService _service;
    private readonly IQuoteMapper _mapper;

    // GET: TradingPlace
    public TradingController(IQuoteService service, IQuoteMapper mapper)
    {
        _service = service;
        _mapper = mapper;
    }

    public ActionResult Index()
    {
        return View(_mapper.MapToViewModel(_service.GetRealtimeQuotes()));
    }

    [OutputCache(NoStore = true, Duration = 0)]
    public ActionResult AutoRefresh()
    {
        return PartialView("_Quotes", _mapper.MapToViewModel(_service.GetRealtimeQuotes()));
    }
}

直接从视图调用最后一个方法(AutoRefresh),以自动刷新表格,实时"信息。

<div id="quotes">
    @Html.Partial("_Quotes", Model)
</div>

<script>
    function Refresh() { $('#quotes').load('@Url.Action("AutoRefresh",   "Trading")'); }
    setInterval(Refresh, 2500);
</script>
  

我试图找到一种方法来突出显示改变的值。我的最终目标是显示趋势(值正在增加/减少......)。

有没有一种简单的方法可以实现这一目标?

谢谢,

的Seb。

1 个答案:

答案 0 :(得分:0)

为了突出变化,您至少需要能够识别变更&#34;。这将涉及拥有先前数据的副本,新数据的副本以及检查它们的方法。

这可以在服务器端完成吗?

也就是说,_service.GetRealtimeQuotes()&#34;中的实施能否知道&#34;什么东西是&#34;改变&#34;?也许是通过&#34;最后更新&#34;该记录的时间戳,或通过其他方式?如果是,则可以将其包含在模型中,并且视图可以简单地响应该属性。所以模型可能有这样的东西:

public bool Changed
{
    get
    {
        // return true of some timestamp is less than a minute old?
        // or less than 30 seconds old?
        // or by some other comparison logic?
    }
}

然后显示这些项目的视图可以绑定到该视图。假设在视图中迭代了这些对象的列表,它可能看起来像这样:

<span class="@(item.Changed ? "changed" : "normal")">@item.CurrentValue</span>

这将修改&#34;更改&#34;的CSS类。元件。

如果无法在服务器端完成,那么客户端可能需要更多的工作。这里有一个自由的概念验证,但是基本的想法是:

  • 更改AJAX以返回数据而不是视图,并在客户端代码中从该数据重新填充DOM。
  • 将数据数组存储在客户端代码中。
  • 当您从AJAX获取新的数据数组时,循环访问它并将记录与当前数据进行比较。
  • 每个&#34;更改&#34;记录,在数据对象中将其标记为。
  • 从数据中重新填充DOM,类似地根据标志修改CSS类。