Проблема в том, что вы не можете установить значение элемента input type = "file" по соображениям безопасности. Вы не хотите, чтобы злые сайты пытались загрузить ваш C: \ whatfiletheywant.dat
Таким образом, вы должны выполнить загрузку во всплывающем окне во временную папку загрузки и отправить имена файлов, загруженных пользователем, в мастер-форму через javascript (window.opener)
Я делал это много раз.
Что-то похожее на то, что я делаю, если мне нужно загрузить что-то во всплывающем окне.
List<string> filesUploaded = new List<string>();
foreach (HttpPostedFile file in HttpContext.Current.Request.Files)
{
if (file.ContentLength <= 0)
continue;
string filename = String.Format("{0}.jpg",Regex.Replace(Guid.NewGuid().ToString(), "[^A-Za-z0-9]*", String.Empty));
file.SaveAs(Path.Combine(Server.MapPath("/upload/temp/"), filename));
filesUploaded.Add(filename);
}
Response.Write(String.Format("<{0}>window.opener.FilesUploaded([{1}]);</{0}>","script", String.Join(",",filesUploaded.ToArray()).TrimEnd(new char[]{','})));
* note ... asp не любит теги script в вашем коде c #, поэтому ключевое слово script находится в String.Format