I am required to integrate a signature pad into an intranet (MVC4) application allowing people to apply electronic signatures to system generated documents. Unfortunately, the signature pad I've been given only has a COM/ActiveX API, so I've written a short Windows Forms application that will allow the user to capture the signature and upload it to the server. When it is uploaded, I need the MVC4 action to associate the signature image with a specified document entity sent by the Windows Forms request. So, say I have this model:
public class DocumentToSign { 
    public int DocumentId { get; set; }
    public int DocumentTypeId { get; set; } 
}
Then I have this action to receive the uploaded image:
[HttpPost]
public ActionResult UploadSignature(DocumentToSign doc, HttpPostedFileBase signature)
{
    //do stuff and catch errors to report back to winforms app
    return Json(new {Success = true, Error = string.Empty});
}
Then, the code to upload the image:
var doc = new DocumentToSign{ DocumentId = _theId, DocumentTypeId = _theType };
var fileName = SaveTheSignature();
var url = GetTheUrl();
using(var request = new WebClient())
{
    request.Headers.Add("enctype", "multipart/form-data");
    foreach(var prop in doc.GetType().GetProperties())
    {
        request.QueryString.Add(prop.Name, Convert.ToString(prop.GetValue(doc, null)));
    }
    var responseBytes = request.UploadFile(url, fileName);
    //deserialize resulting Json, etc.
}
The model binder seems to pick up the DocumentToSign class without any problems, but the HttpPostedFileBase is always null.  I know that I need to somehow tell the model binder that the uploaded image is the signature parameter in the action, but I can't figure out how to do it.  I tried using UploadValues with a NameValueCollection, but NameValueCollection only allows the value to be a string, so the image (even as a byte[]) can't be part of that.
Is it possible to upload a file as well as a model to the same action from outside of the actual MVC4 application?  Should I be using something other than HttpPostedFileBase?  Other than the WebClient?  I am at a loss.
 
    