【问题标题】:Refresh view to show updated property in Razor page刷新视图以在 Razor 页面中显示更新的属性
【发布时间】:2023-03-22 03:49:01
【问题描述】:

我有一个关于 ASP.NET Core 2 MVC / Razor 的新手问题。

如果有办法,我该如何设置属性,例如。从控制器中立即更新页面视图?

我的IndexModel : PageModel 类有一个属性

public IList<CustomObject> ObjectCollection { get; set; }

ObjectCollection 以某种方式被修改,我想在我的页面视图中更新 ObjectCollection.Count()

如果我调试我可以看到ObjectCollection.Count 有一个正确的值。 但是页面视图中显示的值始终保持在初始状态,这是一些旧值。

我是否必须以某种方式刷新 Razor 页面中的视图?

【问题讨论】:

  • 在服务端函数中,使用ModelState.Clear(); Refer to this

标签: c# razor asp.net-core-2.0


【解决方案1】:

请求通常从客户端生成,如果您希望服务器能够在不先接收请求的情况下向客户端发送内容,则需要使用 Web 套接字之类的东西。在 .NET 世界中,这意味着您需要 SignalR

确切地说,如何设置它超出了 Stack Overflow 的范围。但是,一般来说,您需要创建一个 SignalR 集线器服务器端。然后,在客户端,您需要订阅该集线器。当服务器端发生变化时,您的代码将向集线器发送一条消息,然后该集线器将发送给所有订阅的客户端。客户端收到消息后,您将需要更多的客户端代码来执行,即在表格中显示新行或其他内容。

【讨论】:

  • 感谢您的回复。用 Razor 的话来说,我在 Index.cshtml.cs 里面已经有了正确的值,但是 Index.cshtml 视图没有刷新才能正常显示。我不明白为什么我会使用 SignalR,因为它似乎离成功如此之近。
  • 你需要了解你正在开发的平台,即HTTP协议。一旦响应发送到客户端,服务器就完成了。如果客户端想要新信息,它必须发送一个新请求。 Web 套接字是一种客户端技术,允许客户端和服务器之间进行双向通信,这样服务器就可以在不先接收到新请求的情况下更新客户端。这就是 SignalR 的用武之地。没有它,服务器上发生的事情都无关紧要,除非客户端发送新请求。
猜你喜欢
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 2020-03-11
  • 2012-12-08
  • 2015-09-06
  • 2021-12-21
相关资源
最近更新 更多