Como fazer upload de imagem no asp.net MVC 4 usando ajax ou qualquer outra técnica sem postback?

Estou desenvolvendo um site no MVC 4, onde o usuário preenche algumas informações e salva para upload. todas as informações, exceto a imagem, estão sendo salvas no servidor usando Javascript, Json e Ajax, como mostrado abaixo:

$.ajax({
                    url: action,
                    type: "POST",
                    data: JSON.stringify(PostViewModel),
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    beforeSend: function () {            
                    },
                    success: function (data) {
                    try{
                        alert('success');
                    }catch(err){alert(' Error: '+err);}

                    },
                    complete: function () {
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert("Error occured");
                    }
            });

Mas agora eu preciso fazer upload da imagem dele também, mas não consegui encontrar nenhum método que funcione com essa abordagem ou qualquer outra sem post back.

Eu sei colocar controle FileUpload na tag Form e ao pressionar do botão enviar eu posso obter o arquivo de imagem como abaixo:

 HttpPostedFileBase photo = Request.Files["photo"];
        if (photo != null)
        {
            Session["ImgPath"] = "~/Content/PostImages/" + photo.FileName;
            string path = Server.MapPath("~/Content/PostImages/");
            photo.SaveAs(path + photo.FileName);
        }

Mas para este método eu terei que mudar minha abordagem de salvar conteúdo (usando Javascript, Json & Ajax) que eu não posso.

Por favor ajude

Obrigado.

questionAnswers(7)

yourAnswerToTheQuestion