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

.NET Core MVC实现XSD文件上传时IDE提前崩溃问题求助

.NET Core MVC XSD文件上传IDE崩溃问题修复方案

崩溃核心原因

你当前的代码存在Razor标签助手类型绑定不兼容问题:前端type="file"的输入控件通过asp-for绑定了后端模型中string类型的xsddata属性,ASP.NET Core设计时实时校验时触发未处理异常,直接导致IDE崩溃。

分步修复方案

1. 修正模型类定义

拆分文件接收属性和入库存储属性,避免类型不匹配:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.AspNetCore.Http;

public class cat
{
    [Key]
    public int catid { get; set; }
    public string catname { get; set; }
    // 存储入库的文件路径/文件名
    public string xsddata { get; set; }
    // 临时接收上传文件,不映射到数据库表
    [NotMapped]
    public IFormFile xsddataFile { get; set; }
}

2. 修正前端表单配置

同步修改提交目标和文件输入绑定属性:

<form asp-action="Upload" enctype="multipart/form-data" method="post">
    <input asp-for="catname" class="form-control" />
    <input type="file" asp-for="xsddataFile" class="form-control" />
    <input type="submit" value="Create" class="btn btn-primary" />
</form>

3. 修正控制器上传逻辑

接收绑定的完整模型,处理文件保存和数据入库:

[HttpPost]
public async Task<IActionResult> Upload([FromForm] cat model)
{
    // 校验文件有效性
    if (model.xsddataFile == null || model.xsddataFile.Length == 0)
        return BadRequest("请选择有效的XSD文件");
    
    var path = Startup.myAppPath();
    if (!Directory.Exists(path))
        Directory.CreateDirectory(path);
    
    var fileName = Path.GetFileName(model.xsddataFile.FileName);
    var fullSavePath = Path.Combine(path, fileName);
    
    if (!System.IO.File.Exists(fullSavePath))
    {
        using (var fileStream = new FileStream(fullSavePath, FileMode.Create))
        {
            await model.xsddataFile.CopyToAsync(fileStream);
        }
        // 存储文件路径到入库属性,仅存文件名直接赋值fileName即可
        model.xsddata = fullSavePath;
        // 此处补充你自己的数据库保存逻辑即可
        return Ok(new { FileName = fileName, SavePath = fullSavePath });
    }
    return BadRequest("当前文件已存在于服务器");
}

其他注意事项

  • 确保项目已引用Microsoft.AspNetCore.Http包,否则IFormFile类型会报错
  • 如果仅需要存储相对路径,替换fullSavePath为你需要的相对路径格式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:45:03