You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor中调用带参数DELETE API实现数据删除问题求助

问题修复方案

你当前代码存在两个核心问题,分别在API后端和Blazor前端,按下面的步骤修改即可正常运行:

1. 修复API端Delete接口逻辑

你写的删除接口漏了提交数据库变更的步骤,而且返回值写法不符合ASP.NET Core API的规范,修改后的代码如下:

[HttpDelete("{id}")]
// 去掉多余的Route特性,直接写在HttpDelete里更简洁,也不需要加/覆盖全局路由
public async Task<IActionResult> Delete(int id)
{
    var user = await _context.PrgUser.FindAsync(id);
    if (user == null)
    {
        return NotFound();
    }
    try 
    {
        _context.PrgUser.Remove(user);
        // 必须调用SaveChangesAsync,否则删除操作只会停留在内存,不会同步到数据库
        await _context.SaveChangesAsync();
        return Ok();
    }
    catch (Exception ex)
    {
        // 生产环境建议在这里加日志输出异常信息
        return StatusCode(StatusCodes.Status500InternalServerError, ex.Message);
    }
}

2. 修复Blazor端逻辑

前端删除后没有刷新本地数据,也没有做异常情况判断,修改后的代码如下:

@code {
    public PrgUser[] users { get; set; }
    IList<PrgUser> selectedUser;

    protected override async Task OnInitializedAsync()
    {
        await LoadUsers();
    }

    // 把加载数据的逻辑封装成公共方法,删除后可以直接复用刷新列表
    private async Task LoadUsers()
    {
        users = await Http.GetFromJsonAsync<PrgUser[]>("http://localhost:30958/api/Test");
        selectedUser = users.Take(1).ToList();
    }

    protected async Task Enter()
    {
        Console.WriteLine("Pressed");
        // 加空判断,防止没有选中用户时出现下标越界报错
        if (selectedUser == null || !selectedUser.Any())
        {
            Console.WriteLine("请先选择要删除的用户");
            return;
        }
        var response = await Http.DeleteAsync($"http://localhost:30958/api/Test/{selectedUser[0].UserId}");
        if (response.IsSuccessStatusCode)
        {
            Console.WriteLine("删除成功");
            // 删除成功后重新加载数据,页面表格会自动更新
            await LoadUsers();
        }
        else
        {
            Console.WriteLine($"删除失败,错误状态码:{response.StatusCode}");
        }
    }
}

额外注意事项

如果是Blazor WebAssembly项目,需要确认API后端已经配置了CORS策略,允许你的Blazor站点域名发起DELETE请求,否则浏览器会拦截跨域删除请求。

内容的提问来源于stack exchange,提问作者Brecht_Mels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:45:07