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

如何通过Razor页面提交表单数据到数据库?遇404错误求助

解决思路
  • 修正请求URL,补上StudentId
    你当前的Put请求URL是/Students/Update/,但后端接口要求路径里带StudentId(比如/Students/Update/26)。从ViewModel或表单数据里拿到StudentId,把URL改成:

    var url = $"{_client.BaseAddress}/Students/Update/{model.StudentId}";
    HttpResponseMessage response = await _client.PutAsync(url, content);
    

    注意:如果_client.BaseAddress已经包含/api后缀,不要重复添加,避免出现//的无效路径。

  • 确保StudentId能正确回传到Post方法
    在Edit页面的表单里添加隐藏域保存StudentId,保证提交时该值能被正确绑定:

    <input type="hidden" asp-for="StudentId" />
    
  • 替换同步调用为异步等待
    不要用.Result调用异步方法,容易引发死锁或异常。把Post的Edit方法改成异步模式,用await处理请求:

    public async Task<IActionResult> OnPostAsync()
    {
        // 其他业务代码...
        var url = $"{_client.BaseAddress}/Students/Update/{Model.StudentId}";
        HttpResponseMessage response = await _client.PutAsync(url, content);
        
        if(response.IsSuccessStatusCode)
        {
            return RedirectToPage("./Index");
        }
        // 处理请求失败的情况
        return Page();
    }
    
  • 验证请求内容格式
    确认你构建的content是后端接口接受的格式,比如JSON格式:

    var jsonContent = JsonSerializer.Serialize(Model);
    var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
    
  • 调试确认实际请求URL
    在代码里把最终拼接的URL输出到控制台或日志,对比Postman中可用的URL,确保完全一致:

    var url = $"{_client.BaseAddress}/Students/Update/{Model.StudentId}";
    Console.WriteLine($"请求URL:{url}");
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:21:03