在页面上动态显示数据 ASP.NET



我有一个带有一些Web API端点的 ASP.NET 应用程序。

我想在端点每次收到数据时附加主页上显示的数据。

我怎样才能以最简单的方式实现它。我将不胜感激任何帮助。

编辑:

接口控制器:

public class ValuesController : ApiController
{
public static event EventHandler<string> DataPosted;
public IHttpActionResult Get(string value)
{
DataPosted?.Invoke(this, value);
return Ok();
}
}

主页控制器:

public class HomeController : Controller
{
public ActionResult Index()
{
ValuesController.DataPosted += (s_, e_) =>
{
ViewBag.MyData += Environment.NewLine + e_;
};
return View();
}
}

主页浏览:

<div class="row">
<div class="col-md-4">
<h2>Output</h2>
<p>@ViewBag.MyData</p>
</div>
</div>

这当然行不通。我想我需要找到一种方法来强制负责显示@ViewBag.MyData的部分页面刷新。我也尝试了部分视图,但没有任何运气。

我认为解决这个问题的方法不正确。

您有一个浏览器正在向您的 Web 应用程序发出查看主页的请求。 网络应用程序将向浏览器提供包含ViewBag.MyData内容的主页。

你有一个端点ValuesController.Get(字符串值(,当它被调用时,你希望它更新ViewBag.MyData中的值,并不可避免地用它的内容更新主页。

问题是:

  1. 当你调用 ValuesController.Get(字符串值(时,它不会向浏览器返回任何内容,因为它不知道如何返回。
  2. 您正在使用的 ViewBag 不适合您尝试执行的操作。 主要是因为它只保存当前请求生存期的数据。当另一个请求进来时,它就消失了。

修复包括:

  1. 更改 ValuesController.Get 以便它所做的只是将值存储在某个地方(我会选择数据库,但如果您需要快速而肮脏的东西,请尝试创建一个具有 1 个静态字符串属性的静态类并将其存储在那里,或者可能将其存储在应用程序变量中(。
  2. 创建一个名为 GetValue(( 的新终结点,所有应该做的是从存储该值的任何位置检索该值。
  3. 编写客户端代码(我会使用 JQuery/Ajax(定期调用 GetValue(( 端点,它只返回您希望在主页上更新的最新值。

如果要求将传递到 ValuesController.Get (字符串值( 的值保留在应用程序生存期之外,那么我强烈建议将该值存储在数据库中的某个地方。存储在静态变量和应用程序变量中的值仅与 AppDomain 一样长(如果重新启动 Web 应用程序或关闭它,这些值或丢失,但在数据库中仍然存在(。

最新更新