Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET页面上动态显示数据_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

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

C# 在ASP.NET页面上动态显示数据,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我有一个带有web API端点的ASP.NET应用程序 我想在端点每次接收到显示在主页上的数据时附加这些数据 我怎样才能以最简单的方式实现它。我将感谢任何帮助 编辑: Api控制器: public class ValuesController : ApiController { public static event EventHandler<string> DataPosted; public IHttpActionResult Get(string value)

我有一个带有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


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

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

您的浏览器正在向您的web应用发出查看主页的请求。 该web应用程序将为浏览器提供主页,内容为ViewBag.MyData

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

问题是:

  • 调用ValuesController.Get(字符串值)时,它不会向浏览器返回任何内容,因为它不知道如何返回
  • 您正在使用的ViewBag不是适合您尝试执行的存储类型。主要是因为它只在当前请求的生存期内保存数据。当另一个请求进来时,它就消失了
  • 修复程序包括:

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

  • 如果要求将传递到ValuesController.Get(字符串值)中的值保存到应用程序的生命周期之外,那么我强烈建议将该值存储在数据库中的某个位置。存储在静态变量和应用程序变量中的值只有在AppDomain存在的时间内才有效(如果重新启动或关闭web应用程序,这些值可能会丢失,但在数据库中,这些值仍然存在)。

    我认为解决此问题的方法不正确

    您的浏览器正在向您的web应用发出查看主页的请求。 该web应用程序将为浏览器提供主页,内容为ViewBag.MyData

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

    问题是:

  • 调用ValuesController.Get(字符串值)时,它不会向浏览器返回任何内容,因为它不知道如何返回
  • 您正在使用的ViewBag不是适合您尝试执行的存储类型。主要是因为它只在当前请求的生存期内保存数据。当另一个请求进来时,它就消失了
  • 修复程序包括:

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

  • 如果要求将传递到ValuesController.Get(字符串值)中的值保存到应用程序的生命周期之外,那么我强烈建议将该值存储在数据库中的某个位置。存储在静态变量和应用程序变量中的值只有在AppDomain存在的时间内才有效(如果重新启动或关闭web应用程序,这些值可能会丢失,但在数据库中,这些值仍然存在)。

    您有网格吗?当你说append时,你的意思是刷新页面,还是不刷新页面就显示数据?动态的意思是什么?每次的数据结构都不一样吗?听起来你想要Ajax。请提供一个端点的代码示例。@在ApiController中,我有一个静态事件,每次调用端点时都会触发该事件。事件参数包含来自调用的数据。在主页控制器中,我添加了事件处理程序,我想强制显示数据。这可能不是我要走的路,但这是我想到的第一件事,因为我是一个ASP noob,所以我想不出其他任何事情。到目前为止,我试图通过ViewBag传递数据。@Szybki这样更好,但我的意思是编辑你的问题以包含实际代码。你有网格吗?当你说append时,你的意思是刷新页面,还是不刷新页面就显示数据?动态的意思是什么?每次的数据结构都不一样吗?听起来你想要Ajax。请提供一个端点的代码示例。@在ApiController中,我有一个静态事件,每次调用端点时都会触发该事件。事件参数包含来自调用的数据。在主页控制器中,我添加了事件处理程序,我想强制显示数据。这可能不是我要走的路,但这是我想到的第一件事,因为我是一个ASP noob,所以我想不出其他任何事情。到目前为止,我试图通过ViewBag传递数据。@Szybki这样更好,但我的意思是编辑您的问题以包含实际代码。@Szybki这样做是有意义的,如果不让我知道我是否可以进一步帮助您是的,它会