C# 简单文件上传返回空值?

C# 简单文件上传返回空值?,c#,asp.net-mvc,C#,Asp.net Mvc,我正试图在MVC5中完成我的第一个简单文件上传。我正在遵循我发现的一系列示例,但由于某种原因,在我的“创建”ActionResult中,上载文件总是以NULL形式出现,因此上载代码永远不会运行。有人知道我可能做错了什么吗 @{ ViewBag.Title = "Create"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Documents.</h2> <h4>Upload a new d

我正试图在MVC5中完成我的第一个简单文件上传。我正在遵循我发现的一系列示例,但由于某种原因,在我的“创建”ActionResult中,上载文件总是以NULL形式出现,因此上载代码永远不会运行。有人知道我可能做错了什么吗

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}


<h2>Documents.</h2>
<h4>Upload a new document.</h4>

<div class="well">
@using (Html.BeginForm("Create", "Documents", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <h3>Select a file to upload. </h3>

    <input type="file" name="files" value="" multiple="multiple" />

    <input type="submit" value="Upload your file" title="Upload" />

    <div style="color:Red;font-size:14px">@ViewBag.Message</div>
}
</div>

文件输入元素的名称应与操作方法参数名称匹配

因此,请更新HTML标记,使其具有相同的
名称
属性值

<input type="file" name="uploadFile" value="" multiple="multiple" />
更改动作方法参数名称以与文件输入元素名称匹配

<input type="file" name="files" value="" multiple="multiple" />
multiple=“multiple”
属性添加到输入元素时,浏览器将允许最终用户一次选择多个文件。在这种情况下,如果动作方法参数是
HttpPostedFileBase
对象的单个实例,它将从所选
n
文件接收第一个文件。如果需要所有文件,可以将参数更改为集合,例如

[HttpPost]
public ActionResult Create(IEnumerable<HttpPostedFileBase> files)
{
    if (files != null && files.Any())
    {
        foreach (var file in files)
        {
            if (file.ContentLength > 0)
            {
                //do something
            }
        }
    }
}
[HttpPost]
公共操作结果创建(IEnumerable文件)
{
if(files!=null&&files.Any())
{
foreach(文件中的var文件)
{
如果(file.ContentLength>0)
{
//做点什么
}
}
}
}

谢谢,就这样。一旦我得到匹配的元素名和.MapPath中缺少的斜杠,它就起作用了。@Caverman:不客气!IMHO,尝试使用
Path.combined
而不是手动连接,如图所示,我最初从我找到的一个示例中得到了它,但我返回到simple Server.MapPath,看看这是否有什么不同,当然没有。我要回到那条小路上去。
<input type="file" name="files" value="" multiple="multiple" />
[HttpPost]
public ActionResult Create(HttpPostedFileBase files)
{
    if(files!= null && files.ContentLength > 0)
    {
       // do something
    }
}
[HttpPost]
public ActionResult Create(IEnumerable<HttpPostedFileBase> files)
{
    if (files != null && files.Any())
    {
        foreach (var file in files)
        {
            if (file.ContentLength > 0)
            {
                //do something
            }
        }
    }
}