Gjithë mëngjesin jam duke u përpjekur të marr kontrollin AsyncFileUpload nga asp.net AjaxControlToolkit për të punuar në situatën time, pa fat.
Unë kam një faqe të aktivizuar Ajax e cila i shfaq pyetjet përdoruesit, dhe më pas lejon të shkojë përpara dhe përpara përmes pyetjeve pa kërkuar një postim në faqe të plotë, mund të shfaqen shumë pyetje në faqe dhe nga këto pyetje mund të jenë një ose më shumë një kontroll për ngarkimin e skedarëve. Faqja përdor një faqe kryesore e cila përmban elementin e formës që unë e kam modifikuar si rezultat i përgjigjeve të shumta që duket se tregojnë se është problemi.
https://stackoverflow.com/a/2918382/728841
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
Faqja dhe zgjidhja kanë të dyja referenca për AjaxControlToolkit
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
Kodi pas që ndërton pyetjet është si më poshtë
1. private Control _generateControl(FormFields formFieldObject, string questionID) {
2. logger.Debug("start of method _generateControl()");
3. Control genericControl = _formBLL.getControlForForm(formFieldObject);
4. Type typeofcontrol = genericControl.GetType();
5. logger.Debug(typeofcontrol.ToString());
6.
7. HtmlGenericControl controlHolder = new HtmlGenericControl("div");
8. controlHolder.ID = _ns + "formfieldHolder_" + formFieldObject.id;
9. controlHolder.Attributes.Add("class", _ns + "formfieldHolder");
10.
11. if (typeofcontrol == typeof(AsyncFileUpload))
12 {
13. #region display question number and question
14. Label questionIDLabel = new Label();
15. questionIDLabel.CssClass = _ns + "questionIDLabel";
16. questionIDLabel.Text = questionID;
17. Label questionText = new Label();
18. questionText.CssClass = _ns + "questionText";
19. questionText.Text = formFieldObject.name;
20. #endregion
21.
22. #region add holder for file upload control
23. HtmlGenericControl questionControlHolder = new HtmlGenericControl("div");
24. questionControlHolder.Attributes.Add("class", _ns + "questionControlHolder");
25. genericControl.ID = _ns + "questionControl_" + formFieldObject.id;
26. #endregion
27.
28. AsyncFileUpload fuc = (AsyncFileUpload)genericControl;
29. fuc.ID = _ns + "questionControl_" + formFieldObject.id;
30. fuc.ClientIDMode = ClientIDMode.AutoID;
31. fuc.UploadedComplete += fileuploadClick;
32. fuc.UploadedFileError += fileuploadError;
33. questionControlHolder.Controls.Add(fuc);
34.
35. // add the controls to the holder
36. #region add controls to page
37. controlHolder.Controls.Add(questionIDLabel);
38. controlHolder.Controls.Add(questionText);
39. controlHolder.Controls.Add(questionControlHolder);
40. #endregion
41. }
42. return controlHolder;
43. }
Kontrolli më pas i shtohet mbajtësit të vendndodhjes në faqen aspx
<asp:UpdatePanel ID="questionPanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:PlaceHolder ID="QuestionSection" runat="server">
</asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
Më poshtë janë metodat që supozohet të thirren, por nga korrigjimi i Visual Studio dhe kontrollimi i skedarëve të regjistrit, këto metoda nuk goditen kurrë.
public void fileuploadError(object sender, AsyncFileUploadEventArgs e)
{
logger.Debug("START method fileuploadError()");
logger.Debug("END method fileuploadError()");
}
public void fileuploadClick(object sender, AsyncFileUploadEventArgs e)
{
logger.Debug("START method fileuploadClick()");
logger.Debug("END method fileuploadClick()");
}
Përgjigje të tjera kanë sugjeruar se ka një problem me ndryshimin e cilësimeve të dukshme të kontrollit midis true/false, por kur faqja ngarkohet drejtpërdrejt nga url-ja ose lundrimi duke përdorur butonat be next dhe back në aplikacion, dukshmëria e kontrollit nuk ndryshon kurrë.
Megjithëse kjo më bëri të mendoj se meqenëse kontrolli nuk është në kodin aspx të faqes, por është i ngarkuar në server, mund të ketë një problem diku atje. Unë pata një problem me ngjarjet e butonave vijues dhe prapa që nuk aktivizoheshin për shkak të kësaj dhe duhej të përfundoja duke shtuar në të vërtetë kodin në panelin e përditësimit për ato kontrolle për të aktivizuar ngjarjen, por ky nuk është një opsion për kontrollin e pyetjeve pasi ndryshon nga faqja në faqe.
Informacioni i fundit për të shpresuar zgjidhjen e një zgjidhjeje, kontrolli shfaqet në faqe, unë mund të klikoj mbi të dhe të shfletoj në një skedar, por kur kam zgjedhur skedarin duket se thërret Page_Load dhe asgjë tjetër dhe shfaqen 2 dritaret e mëposhtme.
Server Response Error: 'Unknown Server Error'
Do You want to see the response page?
dhe pastaj
Unhandled Exception: Server Response Error: 'Unknown Server Error'
Kjo ndodh në të gjithë shfletuesit e testuar FF 8, Chrome 15.0 dhe IE 9
Në firebug në Firefox marr gjithashtu gabimin e mëposhtëm javaScript që mund të lidhet
Index or size is negative or greater than the allowed amount
[Break On This Error] Type.registerNamespace("Sys.Extended.U...FileUploadEventArgs",Sys.EventArgs);
Çdo ndihmë do të vlerësohej.
EDIT 13/12/2011 Unë jam duke përdorur versionin 4.1.5 të AjaxControlToolkit të shkarkuar sot si versionin më të fundit dhe problemi vazhdon ende.