如何通过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
相关产品推荐
相关产品推荐

