【发布时间】:2019-05-20 22:55:32
【问题描述】:
我正在尝试制作一个组件来显示从原始日期时间经过的时间。
据我了解,您可以覆盖一些生命周期方法,以便在组件初始化时运行一些代码。但是我遇到了一个奇怪的编译器错误。
这是有问题的组件,Timer.cshtml。
<div>
<span>It has been @Elapsed.ToString() since @Origin.ToString().</span>
</div>
@functions {
[Parameter]
DateTime Origin { get; set; }
TimeSpan Elapsed { get; set; }
protected override void OnInit()
{
this.Elapsed = new TimeSpan(DateTime.UtcNow.Ticks - Origin.Ticks);
}
}
dotnet run 显示一个奇怪的编译器错误。 obj\Debug\netstandard2.0\Pages\Timer.g.cs(34,139): error CS1003: Syntax error, ',' expected [C:\path_to_app\BlazorApp1\BlazorApp1.csproj]
VSCode 中也有这个错误。听起来您必须创建一个支持类来覆盖生命周期方法。真的吗?有没有办法覆盖 Razor 页面中的生命周期挂钩?
【问题讨论】:
-
您绝对可以在剃刀视图中覆盖生命周期方法,并且当我测试它时,您的代码非常适合我,所以我相信您的错误原因在其他地方。我完全按照您通过
<Timer Origin="DateTime.Now.AddDays(-1)"></Timer>编写的方式调用组件 -
您是否尝试过清洁/重建解决方案和打开/关闭视觉工作室?也可能想尝试打开文件
Timer.g.cs并查找语法错误。这可能会帮助您找到错误的根源 -
谢谢。问题确实在于只是做一些愚蠢的事情
标签: blazor