- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Blazor 和 .NET Core 3 以及 EF Core 3 创建一个应用程序。我已经为用户 (/api/users) 设置了一个数据库模型和一个 API,并在 chrome 中浏览到它会返回所有实体在数据库中。然而,我在 Razor 文件中的 GetJson 方法返回 null。
这是我的 Razor 代码文件:
@page "/"
@using LogicX.Shared
@inject HttpClient Http
<h1>Users</h1>
@functions{
User[] _users;
protected override async Task OnInitAsync()
{
var users = await Http.GetJsonAsync<User[]>("/api/users");
_users = users;
}
}
@foreach (var usr in _users)
{
<td>@usr.Username</td>
}
GetJsonAsync 方法似乎返回 null,尽管记录在数据库中,尽管事实上我能够通过浏览至/api/users 查看 Json 格式的实体。我对此的实现是否正确,有人知道如何解决这个问题吗?
编辑:服务器端代码:
[Produces("application/json")]
[Route("api/[controller]")]
[ApiController]
public class UsersController : Controller
{
private readonly LogicXDbContext _context;
public UsersController(LogicXDbContext context)
{
_context = context;
}
// GET: api/Users
[HttpGet]
public async Task<ActionResult<IEnumerable<User>>> GetUsers()
{
return await _context.Users.ToListAsync();
}
// GET: api/Users/5
[HttpGet("{id}")]
public async Task<ActionResult<User>> GetUser(int id)
{
var user = await _context.Users.FindAsync(id);
if (user == null)
{
return NotFound();
}
return user;
}
// PUT: api/Users/5
[HttpPut("{id}")]
public async Task<IActionResult> PutUser(int id, User user)
{
if (id != user.Id)
{
return BadRequest();
}
_context.Entry(user).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!UserExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// POST: api/Users
[HttpPost]
public async Task<ActionResult<User>> PostUser(User user)
{
_context.Users.Add(user);
await _context.SaveChangesAsync();
return CreatedAtAction("GetUser", new { id = user.Id }, user);
}
// DELETE: api/Users/5
[HttpDelete("{id}")]
public async Task<ActionResult<User>> DeleteUser(int id)
{
var user = await _context.Users.FindAsync(id);
if (user == null)
{
return NotFound();
}
_context.Users.Remove(user);
await _context.SaveChangesAsync();
return user;
}
private bool UserExists(int id)
{
return _context.Users.Any(e => e.Id == id);
}
}
最佳答案
在 url 前面有一个正斜杠现在是错误的,所以没有请求会通过。使用 api/Users/GetUsers
而是在您的客户端中。
将 API 上的返回类型设置为 Task<ActionResult<List<User>>>
并将接收类型更改为List<User>
而不是 User[]
.
这样做将确保发送和接收类型不匹配。
关于c# - Http GetJsonAsync 从服务器 API 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380009/
我想解析 JSON 以使用 Flurl 列出。我的 JSON 数据是这样的。 { "api": { "results": 114, "fixtures": { "195
我目前正在使用 Blazor,并希望移动我的代码,使其更具可读性和可重用性。在我的 razor 组件中,方法完美无缺——在类中,它没有。 在我的组件中,我可以简单地使用这个: response = a
我在 Blazor 应用程序中有以下代码,它调用 API 并根据用户 ID 参数检索项目列表。 Http.GetJsonAsync 似乎不允许我输入参数。如何将 userid 变量指定为参数? 调用
我已经通过添加最新的包引用来安装该包。 来自 https://www.nuget.org/packages/Microsoft.AspNetCore.Blazor.HttpClient/ 但我仍然无法
由于我目前正在评估 Blazor(服务器),我制作了一个简单的 POC 应用程序在VS2019(版本16.3.8)中用于订购披萨。我创建了一个 Blazor 服务器应用程序,它从中获取数据一个 Web
我正在尝试使用 Blazor 和 .NET Core 3 以及 EF Core 3 创建一个应用程序。我已经为用户 (/api/users) 设置了一个数据库模型和一个 API,并在 chrome 中
我正在制作 Http.JsonAsync("api/MyController/Users");调用很快返回,但在 5 秒后超时,而不是给我数据。 我已经进行了其他类似的调用,但效果很好,但发生了一些奇
我是一名优秀的程序员,十分优秀!