我一般都是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)
我意识到我错过了这个应该如何工作的概念,希望这个问题的答案能够使灯泡亮起来。
答案 0 :(得分:1)
如果我理解正确,只要模型中的值发生变化,您就想在浏览器中刷新值 - 您提到了INotifyPropertyChanged。我假设您以某种方式通过计时器或计划等触发模型更改。
在服务器上呈现网站/页面,然后在浏览器中显示。因此,要实际获取新值,您需要以某种方式将页面发布回服务器,从模型中获取新值,呈现页面并在浏览器中显示它。
为此,您可以使用用户点击的按钮并向服务器查询新数据。如果这不是你想要的,那么你可以查看 SignalR ,它用于将更改推送到浏览器中呈现的客户端网站。
答案 1 :(得分:0)
简而言之,要显示文本,您应该使用@Html.DisplayFor(c=>c.VersionNumber)
帮助程序。
如果您使用@Html.TextBoxFor(m => m.VersionNumber)
,则说Razor会创建一个文本输入标记。
查看更多信息here