2015-01-13 124 views
3

我有一个小表单,可以让用户上传一个文件。表格如下。C# - 什么对象类型是FormData

<form action="/Interviews/Create" enctype="multipart/form-data" id="createInterviewForm" method="post"> 
<div class="form-group"> 
    <div class="col-xs-6"> 
     <label>File Upload:</label> 
     <input type="file" id="txtInterviewUploadFile"> 
    </div> 
</div> 
</div> 
<div class="form-group"> 
    <div class="col-md-10"> 
     <input type="submit" value="Create" class="btn btn-primary" /> 
     <input type="submit" value="Cancelar" class="btn btn-primary" id="btnCancelInterviewCreation" /> 
    </div> 
</div> 

我通过Ajax上传文件,所以我有以下代码

$("form#createInterviewForm").submit(function (e) { 
     e.preventDefault(); 

     var fd = new FormData($(this)[0]); 

     $.ajax({ 
      url: '/Interviews/AjaxCreate', 
      data: fd, 
      processData: false, 
      contentType: false, 
      type: 'POST', 
      success: function (data) { 
       alert(data); 
      } 
     }); 
    }); 

在我的控制器,我有这样的事情

[HttpPost] 
public JsonResult AjaxCreate(??What datatype?? postedData) 
{ 
    return Json(true); 
} 

问题 当我提交时,帖子到达我的控制者。我的问题是我似乎无法弄清楚FormData的对象类型是什么。谁能帮我吗?

+1

通常你创建一个表示FORMDATA的典范。 –

回答

1

所以,我终于得到了这个工作。这是我做过什么:

在阿贾克斯我有以下几点:

$("form#createInterviewForm").submit(function (e) { 
     e.preventDefault(); 

     var formData = new FormData($(this)[0]); 
     formData.append('file', $("#txtInterviewUploadFile")[0].files[0]); 

     $.ajax({ 
      url: "/Interviews/AjaxCreate", 
      type: 'POST', 
      data: formData, 
      contentType: false, 
      processData: false, 
      success: function (data) { 
       alert(data) 
      } 
     }); 

     return false; 
    }); 

这将发布所有表单输入和文件输入。

在控制器上的所有我必须做的是使用的Request.Form [“钥匙”]和Request.Files访问所有信息

+0

你能提供一个它如何看待控制器端的例子吗? – Arti

+0

在控制器中获取文件,您可以使用类似var uploadedFile = Request.Files [0];来访问。要获取属性,可以使用例如Request.Form [“Name”] – Wheels

0

结帐HttpPostedFileBaseLink

(From MSDN) Serves as the base class for classes that provide access to individual 
files that have been uploaded by a client. 

你的控制器动作将是:

[HttpPost] 
public JsonResult AjaxCreate(HttpPostedFileBase postedData) 
{ 
    return Json(true); 
} 
+0

我更改了我的控制器以匹配您发布的内容,但postingData为null。 – Wheels