在我的Blazor项目中,我有两个应用程序(服务器、客户端、共享). 现在我被困了几个小时,因为在我的Report.razor页面中,IDE显示错误CS1061.我无法使用报表对象解析报表列表中的任何属性.

有谁有意见来解决我的问题吗?谢谢!

服务器应用:ReportController.cs

using BlazorApp.Shared;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Identity.Web.Resource;

namespace BlazorApp.Server.Controllers
{
    [Authorize]
    [ApiController]
    [Route("[controller]")]
    [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")]
    public class ReportController : ControllerBase
    {

        private readonly ILogger<ReportController> _logger;

        public ReportController(ILogger<ReportController> logger)
        {
            _logger = logger;
        }

        private List<Report> Reports = new()
        {
            new("Title","Desc","Name","Lastname")
        };

        [HttpGet("List")]
        public ActionResult List()
        {
            return Ok(Reports);
        }
    }
}

客户端应用程序:Report.razor

@page "/reports"
@using BlazorApp.Shared
@using Microsoft.AspNetCore.Authorization;
@attribute [Authorize]
@inject HttpClient Http

<PageTitle>Report</PageTitle>

<h1>Report</h1>

<ul>
    @foreach (var report in Reports)
    {
        <li>@report.Title</li> -> Compiler Error CS1061
    }
</ul>

@code {

    private List<Report> Reports = new();

    protected override async Task OnInitializedAsync()
    {
        Reports = await Http.GetFromJsonAsync<List<Report>>("List/Report");
    }
}

我的共享班级:Report.cs

namespace BlazorApp.Shared
{
    public class Report
    {
        public string Title { get; set; }

        public string Description { get; set; }

        public string ReporterName { get; set; }

        public string ReporterLastname { get; set; }

        public Report() { }

        public Report(string title, string description, string reporterName, string reporterLastname)
        {
            this.Title = title;
            this.Description = description;
            this.ReporterName = reporterName;
            this.ReporterLastname = reporterLastname;
        }
    }
}

推荐答案

你有

public class Report
{
   public string Title { get; set; }
   ...
}

但也有Report.razor页.这将编译成另一个class Report,并且该class Report没有标题属性.

  private List<Report> Reports = new();  // is a list of razor components

一个快速的解决办法是将您的页面重命名为ReportPage.razor.你可以保留@page "/reports",这样它就不会影响其他任何东西了.

我经常使用Page这个后缀,正是出于这个原因.

Csharp相关问答推荐

火鸟DBC驱动程序未加载ADF DLC

如何将ref T*重新解释为ref nint?

C# uwp中的Win11启动屏幕剪辑工作方式不同

无法从具有一对多关系的C#类中使用Swagger创建记录

更改对象的旋转方向

ASP.NET Core:如何在IPageFilter中注入ApplicationDbContext

"virtual"修饰符对接口成员有什么影响?

TDLib与机器人共享电话号码

. NET WireMock拒绝PostAsJsonAsync序列化

可为空的泛型属性

不带身份的Blazor服务器.Net 8 Cookie身份验证

是否有必要在ASP.NET Core中注册可传递依赖项?

JsonPath在Newtonsoft.Json';S实现中的赋值

在C#中,当输入一个方法/局部函数时,我的IEnumerator被重置/重新创建.为什么?

Blazor:搜索框在第一次搜索时不搜索

如何使用ODP.NET C#设置Oracle会话时间长度限制

Visual Studio 17.8.0制表符自动完成问题--三缩进

具有嵌套属性的IGGroup

仅在ASP.NETCore应用程序中的附加单独端口上公开一组终结点

有没有更好的方法来使用LINQ获取整行的计算组