当数据模型发生变化时,将更新发布到asp.net核心Razor页面

时间:2018-04-18 15:37:07

标签: asp.net asp.net-core razor-pages

我一般都是asp和网络编程的新手。我正在使用Visual Studio 2017.我创建了一个Razor Web应用程序,它使用我为Windows应用程序编写的现有数据模型。我可以在首次加载时在我的网页上显示我的数据模型中的值,但我无法弄清楚如何在我的数据模型中更改页面时显示新值。我习惯于在WPF中工作,绑定到Dependency属性和INotifyPropertyChanged属性。这是我用于Razor页面的属性之一:

    [BindProperty]
    public string VersionNumber { get; set; } = "0.0.0.0";

我已经确认该属性实际上正在发生变化,但更改从未反映在网页上。

我尝试了几种方法:

<form>
    <label style="margin: 5px;">
        Version
    </label>
    <input type="text" trim="false" uppercase="false" lowercase="false" propercase="false" asp-for="VersionNumber" />
</form>

@Html.TextBoxFor(m => m.VersionNumber)

我意识到我错过了这个应该如何工作的概念,希望这个问题的答案能够使灯泡亮起来。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,只要模型中的值发生变化,您就想在浏览器中刷新值 - 您提到了INotifyPropertyChanged。我假设您以某种方式通过计时器或计划等触发模型更改。

在服务器上呈现网站/页面,然后在浏览器中显示。因此,要实际获取新值,您需要以某种方式将页面发布回服务器,从模型中获取新值,呈现页面并在浏览器中显示它。

为此,您可以使用用户点击的按钮并向服务器查询新数据。如果这不是你想要的,那么你可以查看 SignalR ,它用于将更改推送到浏览器中呈现的客户端网站。

答案 1 :(得分:0)

简而言之,要显示文本,您应该使用@Html.DisplayFor(c=>c.VersionNumber)帮助程序。 如果您使用@Html.TextBoxFor(m => m.VersionNumber),则说Razor会创建一个文本输入标记。 查看更多信息here