我有一个带有一些Web API端点的ASP.NET应用程序。
我希望每次端点接收时都附加主页上显示的数据。
我怎样才能以最简单的方式实现它。我将不胜感激任何帮助。
编辑:
Api控制器:
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
来刷新。我也尝试了部分视图,但没有任何运气。
答案 0 :(得分:2)
我认为解决这个问题的方法不正确。
您有一个浏览器向您的网络应用发出请求以查看主页。 Web应用程序将使用ViewBag.MyData的内容为浏览器提供主页。
您有一个端点ValuesController.Get(字符串值),当它被调用时,您希望它更新ViewBag.MyData中的值,并且不可避免地更新主页及其内容。
问题是:
修正是:
如果要求是将值传递给ValuesController.Get(字符串值)的值超过应用程序的生命周期,那么我强烈建议将该值存储在某个数据库中。存储在静态变量和应用程序变量中的值仅在AppDomain执行时生效(如果重新启动Web应用程序,或关闭它们,这些值或丢失,但在数据库中,它仍然存在)。