I need to pass my upload file to my controller using jquery ajax.
JS:
$('#btnpopupreg').click(function () {
        $.ajax({
            type: 'POST',
            url: '/Membership/Register',
            data: $('#frmRegister').serializeArray(),
            dataType: 'json',
            headers: fnGetToken(),
            beforeSend: function (xhr) {
            },
            success: function (data) {
                //do something
            },
            error: function (xhr) {
            }
        })
})
View:
@model Test.RegisterViewModel
@{
       using Html.BeginForm(Nothing, Nothing, FormMethod.Post, New With {.id = "frmPopUpRegister", .enctype = "multipart/form-data"})
}
<input type="file" />
//rest of my strongly typed model here
<input type="button" value="BUTTON" />
//rest of the code here
Controller:
[HttpPost()]
[AllowAnonymous()]
[ValidateAntiForgeryToken()]
public void Register(RegisterViewModel model)
{
    if (Request.Files.Count > 0) { //always 0
    }
    if (ModelState.IsValid) {
          //do something with model
    }
}
I can get the model value just fine but Request.Files always returns null. I also tried using HttpPostedFileBase but it also always return null
[HttpPost()]
[AllowAnonymous()]
[ValidateAntiForgeryToken()]
public void Register(RegisterViewModel model, HttpPostedFileBase files)
{
    //files always null
    if (ModelState.IsValid) {
          //do something with model
    }
}
 
     
     
    