大家好,我错过了一些非常基本的东西,我真的很感激一些指导。
我对Blazor和实体框架相当陌生,并且正在构建我的第一个Blazor应用程序。
我有一个相当基本的数据类
using System.ComponentModel.DataAnnotations;
namespace BIDM2.Data
{
public class InvalidAddressMapping
{
[Key]
public int record_no { get; set; } = 0;
public string sales_org_pos { get; set; } = " ";
public string press_sales_mgr_code { get; set; } = " ";
public string press_sales_mgr_Name { get; set; } = " ";
public string forming_sales_rep_code { get; set; } = " ";
public string forming_sales_rep_Name { get; set; } = " ";
}
}在我的控制器中使用的方法如下
[HttpGet]
public async Task <ActionResult<List<InvalidAddressMapping>>> GetInvalidAdressMappings()
{
return await _db.GetInvalidAddressMappings.FromSqlRaw("EXEC BIDM_GetInvalidAddressMappings;").ToListAsync();
}我试着在我的剃须刀页面上用它
@code {
List<InvalidAddressMapping> invalidMappings = new List<InvalidAddressMapping>();
protected override async Task OnInitializedAsync()
{
invalidMappings = await HttpClient.GetFromJsonAsync<List<InvalidAddressMapping>>(NavigationManager.BaseUri + "invalidmapping");
}
}然而,当我尝试运行我的剃须刀页面im获得错误时,CS8601可能为空引用:
我不确定我是否完全理解,我可以用一些指导来指引我朝着正确的方向前进,这必须是我错过的一些相当基本的东西。
有趣的是,这一切都是因为我试图将现有的非异步方法转换为异步方法。
当我用
//1. get invalid address mappings
public InvalidAddressMapping[] GetInvalidAddressMappings()
{
InvalidAddressMapping[] invMappings;
// exec BIDM_GetInvalidAddressMappings calls the stored procedure
invMappings = _dbcontext.GetInvalidAddressMappings.FromSqlRaw("EXEC BIDM_GetInvalidAddressMappings;").ToArray();
return invMappings;
}
}它工作得很好,我可以看到一个可爱的JSON数据列表
请帮助一个挣扎着的老家伙,把我推到一个我能理解我哪里出错的方向上:)
谢谢大家
发布于 2022-07-19 09:19:17
GetFromJsonAsync扩展方法返回一个可空类型。在您的例子中,它是List<InvalidAddressMapping>? (请注意后面的额外? )。例如,如果它不能正确地反序列化,它可能返回null。代码告诉您,您需要检查空响应是否安全。
因此,安全版本是这样做的:
var result = await HttpClient.GetFromJsonAsync<List<InvalidAddressMapping>>(
NavigationManager.BaseUri + "invalidmapping");
if(result == null)
{
// Do something here to handle this error, for example:
throw new Exception("Can't get data from the server for some reason, help!");
}
invalidMappings = result;还请注意,您看到的CS8601消息是警告,而不是错误。所以从技术上讲,你可以忽略它,尽管我强烈建议你不要这样做。
https://stackoverflow.com/questions/73034149
复制相似问题