如何在MVC Razor中使用request.form获取添加文件上传值的值?

时间:2013-08-06 09:06:06

标签: jquery asp.net-mvc asp.net-mvc-4 razor

如何使用MVC Razor中的request.form获取添加文件上传值的值?我无法访问“fileTypeInput”值。请看截图...       

        <span class="btn green fileinput-button">
            <i class="icon-plus icon-white"></i>
            <span>@Html.LocalizeGlobal("Add files...")</span>
            @* <input type="file" id="fileContainer" name="files[]" multiple />*@
            <input type="file"  name="fileTypeInput" value="Upload" />
        </span>

    </div>


   private void FileUpload(Course item)
    {
        var x = (System.Web.HttpPostedFileBase)Request.Files["uploadFile"];
        switch (Request.Form["fileTypeInput"])
        {
            case "Upload":
          . . . .
          . . . . .
        }
   }

enter image description here

1 个答案:

答案 0 :(得分:2)

fileTypeInput将在Request.Files内,而不在Request.Form内。你好像把这些键翻了过来:

var x = (System.Web.HttpPostedFileBase)Request.Files["fileTypeInput"];

由于您的文件输入名称为fileTypeInput,因此您应该使用该密钥从Request.Files集合中检索上传的文件。现在你使用了Request.Files["uploadFile"],但不清楚这个uploadFile的来源以及你的表单中是否有一个带有此名称的文件输入。

您还可以让控制器操作采用具有相同名称的参数:

public ActionResult SomeAction(HttpPostedFileBase fileTypeInput)
{
    ...
}

这将避免您需要进行投射,并使您的操作更容易进行单独的单元测试。