【问题标题】:C# - What object type is FormDataC# - FormData 是什么对象类型
【发布时间】:2015-03-11 10:39:06
【问题描述】:

我有一个小表单,允许用户上传一个文件。表格如下。

<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 的对象类型是什么。谁能帮帮我?

【问题讨论】:

  • 通常您会创建一个模型来表示该表单数据。

标签: jquery ajax asp.net-mvc file-upload


【解决方案1】:

所以我终于让它工作了。这就是我所做的:

在 ajax 上我有以下内容:

$("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["Key"] 和 Request.Files 来访问所有信息

【讨论】:

  • 你能举个例子说明它在控制器端的样子吗?
  • 要获取控制器中的文件,您可以使用 var uploadFile = Request.Files[0]; 之类的方法进行访问。要获取属性,您可以使用例如 Request.Form["Name"]
【解决方案2】:

查看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);
}

【讨论】:

  • 我更改了控制器以匹配您发布的内容,但postedData 为空。
猜你喜欢
  • 1970-01-01
  • 2013-06-02
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
相关资源
最近更新 更多