我在VS 2015中使用的是ASP.NET5,MVC6.我在做一个网络应用程序.我的表格上有:

    <form method="post" enctype="multipart/form-data">
    <div id="uploadSection" >
        <label >Select files for upload</label>
        <input type="file" id="fileSelect" name="fileSelect" multiple />
    </div>

    <div>
        <input type="submit" id="thisbutton" value="button"  />
    </div>
    </form>

在我的控制器中:

        [HttpPost]
    public async Task<IActionResult> FileForm(FileViewModel vm, IFormFile file)
    {
        if (ModelState.IsValid)
        {
            //IFormFileCollection files = Request.Form.Files;
            string filePath = Path.Combine("C:", "transfers");
            //foreach (var file in files)
            //{
                if (file != null && file.Length > 0)
                {
                    var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                    await file.SaveAsAsync(Path.Combine(filePath, fileName));
                }
            //}
            ModelState.Clear();
        }
        return View();
    }

我有一个更大的表单,表单中有母表单字段,这些字段将进入我的FormViewModel(所有字段都会按它们应该的方式填充),我实际上try 将IFormFileCollection、ICollection、IList、List作为上述方法中的参数,并将其直接放入我的视图模型中.无论是作为单个文件还是多个文件,在模型或控制器中,我都会得到null.

更棒的是,我用fiddler运行了多次,它实际上是在发布文件——那么为什么它们没有被转换到模型中呢?

我的依赖项有错吗?有人能想到这是什么原因吗?

  "dependencies": {
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.AspNet.Http":  "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
  },

推荐答案

您的文件输入具有"fileSelect"的名称属性.操作的参数名称是"file".让它们相匹配,这应该会奏效.

Asp.net相关问答推荐

在具有多个项目(API/服务/数据等)的解决方案中编写 SignalR 服务的最佳方法是什么?

在 AppConfig.json 中存储对象的最佳方式

web.config 部分的单独配置文件

带有模型的 mvc 上传文件 - 第二个参数发布的文件为空

系统日期时间?与 System.DateTime

将 ASP.NET 成员资格表添加到我自己的现有数据库中,还是应该配置一个单独的 ASP.NET 成员资格数据库?

使用会话变量有多安全 - asp.net / c#

区分开发、登台和生产环境之间的 web.config

iOS 8 / Safari 8 不适用于 ASP.NET AJAX 扩展

在每个控制器的 ASP.NET WebAPI 上强制使用 CamelCase

为什么 Asp.Net Identity IdentityDbContext 是一个黑盒?

如何在 ASP.Net Core Razor 页面上重定向

ASP.NET Core 2.0 为同一端点结合了 Cookie 和承载授权

缩小 ASP.NET 应用程序的 Html 输出

使用 jQuery 调用 ASP.NET PageMethod/WebMethod - 返回整个页面

MVC 4 - Razor - 将变量传递到 href url

SQLServer 与 StateServer 的 ASP.NET 会话状态性能

IISExpress 找不到使用 Visual Studio 2013 运行 localhost 的 ssl 页面

如何加密 web.config 中的一项

IE9 JavaScript 错误:SCRIPT5007:无法获取属性ui的值:对象为空或未定义