ASP.NET Core
.NET Framework 中一套用于生成 Web 应用程序和 XML Web 服务的技术。
25 个问题
嗨, 我使用 blazor Web 应用模板创建了一个新的 .NET 8 blazor 项目,它给了我两个项目。 现在我想从我的客户端项目调用服务器项目中的 API 方法,我已经在服务器项目中添加好我的API控制器和从数据库访问数据的方法,任何帮助都是值得赞赏的。
注意: 此问题总结整理于:.Net 8 Blazor Web 应用模板给了我两个项目,一个用于服务器,另一个用于客户端,我在服务器项目中添加了控制器,但无法调用控制器方法从数据库获取数据,您能帮我解决这个问题吗
你好,
在.NET 8 Blazor Web 应用中可以使用 HttpClient 从客户端项目中调用服务器端的方法,示例如下:
1.服务器项目中 Program.cs
中代码:
builder.Services.AddControllers();
builder.Services.AddHttpClient();
...
app.MapControllers();
app.Run();
2.Values API 控制器(这个用于测试,你可以使用你的控制器):
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly BlazorApp8ControllerContext _context;
public ValuesController(BlazorApp8ControllerContext context)
{
_context = context;
}
// GET: api/Values
[HttpGet]
public async Task<ActionResult<IEnumerable<User>>> GetUser()
{
return await _context.User.ToListAsync();
}
}
3.客户端项目添加模型(与服务器项目相同)以访问数据,用户(用于测试的模型,您可以使用您的模型):
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
和GetDataComponent.razor
@page "/getdata"
@using BlazorApp8Controller.Client.Models
<h3>GetDataComponent</h3>
@inject HttpClient Http
@if (todoItems == null)
{
<p>No Todo Items found.</p>
}
else
{
<ul>
@foreach (var item in todoItems)
{
<li>@item.Name</li>
}
</ul>
}
@code {
private List<User> todoItems;
protected override async Task OnInitializedAsync() =>
todoItems = await Http.GetFromJsonAsync<List<User>>(https://localhost:7281/api/values);//for test, you can use your uri
}
结果如下:
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。