【问题标题】:Overriding lifecycle hooks in Blazor razor file覆盖 Blazor razor 文件中的生命周期挂钩
【发布时间】: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 页面中的生命周期挂钩?

【问题讨论】:

  • 您绝对可以在剃刀视图中覆盖生命周期方法,并且当我测试它时,您的代码非常适合我,所以我相信您的错误原因在其他地方。我完全按照您通过&lt;Timer Origin="DateTime.Now.AddDays(-1)"&gt;&lt;/Timer&gt; 编写的方式调用组件
  • 您是否尝试过清洁/重建解决方案和打开/关闭视觉工作室?也可能想尝试打开文件Timer.g.cs 并查找语法错误。这可能会帮助您找到错误的根源
  • 谢谢。问题确实在于只是做一些愚蠢的事情

标签: blazor


【解决方案1】:

“您可以在没有支持类的情况下在 Razor 页面中覆盖吗?”问题的答案?是的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2019-07-11
    • 2015-12-19
    • 2011-07-07
    相关资源
    最近更新 更多