0

我对 AJAX 的经验很少(几乎没有)。

我想创建一个示例表单,我可以在其中上传图像文件(想想 eBay 拍卖),但是这些文件可以(并且应该)拖放到浏览器窗口中,就像您将 APK 上传到 Google Play 时一样。

我从来没有做过这样的事情,我想学习。我目前没有真正的用例来实现,我要求这个来学习. 所以,让我们选择 eBay 的例子。

我的 ViewModel 可能如下所示:

public class AuctionViewModel {

    public string Title, Description;
    public double Price;
    [...]
    public IEnumerable<Picture> Images; //most important part!
}

public class Picture {
    public string Url; //display URL, perhaps to be generated
    public byte[] payload; //uploaded data
}

问题的要点:

  1. 控制器的外观如何?我想我需要一个单独的控制器来进行 AJAX 上传(ViewModel 应该存储在 Session 中)
  2. Javascript 客户端代码是什么样的?
  3. 有没有关于 jQuery/AJAX/MVC4 中可拖放文件的教程?
4

1 回答 1

0

你可以使用HTML5 File API. 它将允许您订阅dropDOM 元素的事件并能够检索文件内容并使用 XmlHTTPRequest 对象将文件异步发送到服务器。我发布的 Mozilla 链接包含大量示例。

在服务器端,您可能会考虑IEnumerable<HttpPostedFileBase>对上传的文件有效负载使用 . 而不是byte[]. 如果您将multipart/form-data内容类型与示例中所示的 AJAX 请求一起使用,则默认模型绑定器将自动将上传的文件绑定到模型。

于 2013-03-30T23:02:04.160 回答