asp.net Blazor参数给出在声明错误之前无法使用局部变量

jobtbby3  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(130)

我有一些接受名称字符串的组件,并会根据传递给它们的名称显示不同的信息。其中一些组件没有问题,但其中一些组件会在用法上标记CS0841错误代码。
错误(活动的)CS0841在声明为\Pages\Awards\Tech \Pages\Awards\Tech\Profile之前不能使用局部变量“Name”。
这个可以

<!-- Block1 -->
<div class="flip-card @Classes" onclick="@callback">
    <div>
        <Images Name="@Name"/>
    </div>
    <div>
        <h2><NameInfo Name="@Name" ReturnVal="Name"/></h2>
        <h3>@year</h3>
    </div>
</div>
@code {
    [Parameter]
    public string Name{get;set;}
    [Parameter]
    public string? Classes{ get; set; }
    [Parameter]
    public string[] list{ get; set; }
    [Parameter]
    public int year{ get; set; }
    [Parameter]
    public EventCallback<int> yearCallback{ get; set; }

    public async Task callback()
    {
        await yearCallback.InvokeAsync(year);
    }
}

但这一个没有

<!-- Block2 -->
<div class="prof-container">
    <div class="year-close">
        <h2>@Year</h2>
        <h1><NameInfo Name="@Name" ReturnVal="Name" /></h1>
    </div>
    <div class="portrait">
        <Images Name="@Name"/>
    </div>
    <button class="CloseProfile" onclick="@callback"> X </button>
</div>

@code {
    [Parameter]
    public string Name{ get; set; }

    [Parameter]
    public string? Year{ get; set; }

    [Parameter]
    public EventCallback<string> clear{ get; set; }

    public async Task callback()
    {
        await clear.InvokeAsync("");
    }
}

我已经搜索了错误代码信息,看了这里的其他几个问题,最接近的似乎是here。然而,这并不能解释为什么我会得到这个错误。它适用于所有调用我的参数的示例,在块2中,但不在块1中。
Block1编译没有问题,链接没有问题,运行良好。Block2抛出错误,阻止成功构建。
我错过了什么导致了这一切?
编辑:将EventCallback更正为EventCallback,并将(“”)添加到块2中的InvokeAsync

6l7fqoea

6l7fqoea1#

我不确定问题的来源。但是,我确定了一个修复程序,允许它再次构建。
1.在HTML中,删除对参数的所有引用。

<!-- Block2 -->
<div class="prof-container">
    <div class="year-close">
        <h2></h2>
        <h1><NameInfo Name="" ReturnVal="Name" /></h1>
    </div>
    <div class="portrait">
        <Images Name="@Name"/>
    </div>
    <button class="CloseProfile" onclick=""> X </button>
</div>

@code {
    [Parameter]
    public string Name{ get; set; }

    [Parameter]
    public string? Year{ get; set; }

    [Parameter]
    public EventCallback<string> clear{ get; set; }

    public async Task callback()
    {
        await clear.InvokeAsync("");
    }
}

1.完全剪切代码块。保存并生成。仍然出现相同的错误。

<!-- Block2 -->
<div class="prof-container">
    <div class="year-close">
        <h2></h2>
        <h1><NameInfo Name="" ReturnVal="Name" /></h1>
    </div>
    <div class="portrait">
        <Images Name=""/>
    </div>
    <button class="CloseProfile" onclick=""> X </button>
</div>

1.粘贴或重新键入代码块

<!-- Block2 -->
<div class="prof-container">
    <div class="year-close">
        <h2></h2>
        <h1><NameInfo Name="" ReturnVal="Name" /></h1>
    </div>
    <div class="portrait">
        <Images Name=""/>
    </div>
    <button class="CloseProfile" onclick=""> X </button>
</div>

@code {
    [Parameter]
    public string Name{ get; set; }

    [Parameter]
    public string? Year{ get; set; }

    [Parameter]
    public EventCallback<string> clear{ get; set; }

    public async Task callback()
    {
        await clear.InvokeAsync("");
    }
}

1.保存并关闭IDE
1.将引用添加回HTML。

<!-- Block2 -->
<div class="prof-container">
    <div class="year-close">
        <h2>@Year</h2>
        <h1><NameInfo Name="@Name" ReturnVal="Name" /></h1>
    </div>
    <div class="portrait">
        <Images Name="@Name"/>
    </div>
    <button class="CloseProfile" onclick="@callback"> X </button>
</div>

@code {
    [Parameter]
    public string Name{ get; set; }

    [Parameter]
    public string? Year{ get; set; }

    [Parameter]
    public EventCallback<string> clear{ get; set; }

    public async Task callback()
    {
        await clear.InvokeAsync("");
    }
}

代码看起来是一样的,但是现在构建时没有错误。

相关问题