【发布时间】:2019-11-04 02:27:32
【问题描述】:
我正在为我的 REST API 创建网络客户端,并且我想在我的表中添加一个包含异步函数结果的字段。
@foreach(Product item in products)
{
<tr>
<th>@item.Name</th>
<th>@item.Amount</th>
<th>@GetUnit(item.UnitID).Result</th>
<th>@item.PriceNetto</th>
</tr>
}
async Task<string> GetUnit(Guid id)
{
string a = "https://localhost:5001/api/Units/";
a += id.ToString();
var temp = await Http.GetJsonAsync<Unit>(a); //it fails here
return temp.Name;
}
简而言之,我有一个产品列表,列表中的项目具有“UnitID”属性,我用它来发出 GET 请求。当我在我的异步函数结果之后将代码.Result 放在任何地方时,Visual Studio 的调试器只需跳过负责调用 API 和“砖块”整个应用程序的行,没有任何错误或异常。然后我必须重新启动项目。
我试图创建第二个函数仅用于返回GetUnit(id).Result,但它什么也没提供。我试图返回整个 Unit 对象,然后在表中 GetUnit(item.UnitID).Name 但它只是代表对象(我猜......)。我似乎只需要使用.Result 来完成它,但是当我这样做时它不起作用。
我的 API 是用 .Net Core 2.2 制作的,我的客户端是用 .Net Core 3.0(Blazor 模板)制作的。这是一个错误还是我不能那样做?谢谢。
【问题讨论】:
-
您可以在表格中等待您的方法而不是使用 .Result 吗?喜欢
<th>@(await GetUnit(item.UnitID))</th> -
我不明白你的问题。
标签: c# asp.net-core blazor-client-side