我正在开发一个旨在显示股票报价的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。
答案 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类。元件。
如果无法在服务器端完成,那么客户端可能需要更多的工作。这里有一个自由的概念验证,但是基本的想法是: