检索C#中附加到formData的数据

时间:2017-08-02 20:11:33

标签: c# jquery

在这种情况下:

var xhr = new XMLHttpRequest();
var fd = new FormData();
fd.append("file", document.getElementById('fileUpload').files[0]);
fd.append("PhoneId", '1234');
xhr.open("POST", '/Main/Upload', true);
xhr.send(fd);
xhr.addEventListener('load', function (event) {
    var test = event.target.response;
})

我有一个文件上传以及附加的整数。我的控制器是:

 public ActionResult Upload(Model newModel)
    {
        NewFiles files = new NewFiles ();
        try
        {
            HttpPostedFileBase file = Request.Files[0];
        }
        catch(Exception)
        {}
    }

public class newModel
{
    public int FileID { get; set; }

    public string ReturnAction { get; set; }

    public HttpPostedFileBase fileUpload { get; set; }

    public int PhoneId { get; set; }
}

上传的文件被识别,但我在C#中需要查看上传的PhoneId?

1 个答案:

答案 0 :(得分:1)

您的语法在控制器中有点偏,无法编译。将控制器更改为以下语法应该有效。这显示了如何访问POSTed文件和模型属性。

    [HttpPost]
    public ActionResult Upload(newModel model, HttpPostedFileBase file)
    {
        // Check the file is valid.
        if (file == null || file.ContentLength == 0 || string.IsNullOrEmpty(file.FileName))
            ModelState.AddModelError("fileUpload", "Invalid file uploaded.");

        // Access model properties as you wish, like this:
        int phoneID = model.PhoneId;

        return null;
    }

要改进代码的一些额外的事情:

  • 一般来说,在定义类时,它的名称应该是CapitalizeEachWord的格式。
  • 如果你的AJAX请求使用jQuery而不是普通的JavaScript方式,那将会容易得多。通过使用普通的JavaScript方式,您必须手动将表单属性分配给FormData对象,使用jQuery,您可以简单地执行$("#formID")。serialize()。