Я нашел приемлемое решение еще тогда, когда работал над этим.И с тех пор я получил электронные письма от людей, у которых была та же самая проблема и спрашивали, нашел ли я решение.Итак, я представляю это здесь, удаляя любой лишний код:
Из пользовательского элемента управления, который имеет элемент управления FileUpload, я сначала устанавливаю переменную сеанса на обратной стороне в обработчике FileUploadComplete:
* в файле ascx (upload_chart.ascx) У меня есть AsyncFileUpload, важными являются OnUploadComplete и OnClientUploadComplete: *
<ajaxToolkit:AsyncFileUpload
OnUploadedComplete="FileUploadComplete1"
OnClientUploadComplete="UploadComplete1"
ID="ImageFileUploader"
runat="server" />
* в коде позадифайл ascx (upload_chart.ascx.cs), который я обрабатываю FileUploadComplete: *
public void FileUploadComplete1(object sender, EventArgs e)
{
try
{
if (ImageFileUploader.FileBytes.Length > 0)
{
// File data is in ImageFileUploaded.FileBytes
// Save it however you need to
// I saved it to a database, in a DBImage Object class I created
// DBImage is specific to my application
ODS.Entity.DBImage pimg =
ODS.Data.DataRepository.SaveImageBytes(ImageFileUploaded.FileBytes);
// Set the ImageID1 in the session
Session["ImageID1"] = pimg.IdImageGroup.ToString();
}
else
{
// error handling for an empty file, however you want to handle it
}
}
catch (Exception Ex)
{
// error handling for an unhandled exception, whatever you want to do here
}
}
Javascript и методы сценария используются для установки значения на странице, здесьмой код для метода сценария:
// on the aspx page code behind (chartofthedayadmin.aspx.cs) I have the webmethod:
[System.Web.Services.WebMethod]
public static string GetImageID1()
{
System.Web.SessionState.HttpSessionState Session = System.Web.HttpContext.Current.Session;
String retval = Session["ImageID1"].ToString();
Session["ImageID1"] = null;
return retval;
}
Вот javascript: // на переднем конце aspx (chartofthedayadmin.aspx) У меня есть javascript // для вызова веб-метода и сообщения о сбое JavaScript:
function UploadComplete1() {
var str = PageMethods.GetImageID1(uploadSuccess1, uploadFailed);
}
function uploadFailed() {
alert('error occurred or some meaningfull error stuff');
}
* // JavaScript на пользовательском элементе управления (upload_chart.ascx) для установки значения скрытогополе *
function uploadSuccess1(result) {
document.getElementById('<%= fldImageID.ClientID %>').value = result;
}
примечание: убедитесь, что ваш скриптменеджер имеет EnablePageMethods = "true".