Programim dhe zhvillim, javascript, python, php, html

ASP.Net AjaxControlToolkit AsyncFileNgarko në panelin e përditësimit që është krijuar në kodin e serverit me faqen kryesore c#

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.

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.


  • Rifresko grupin e aplikacioneve dhe rinisni faqen e internetit. Nuk kam punuar për mua. Gjithashtu ndryshova gjendjen time të sesionit në InProc në vend të serverit të shtetit në web.config. 07.06.2017

Përgjigjet:


1

Problemi i zgjidhur

Ajo që nuk e kuptova ishte se asnjë nga fushat e mia të krijuara dinamike nuk ishte e mbushur kur ndodhi një postim i pjesshëm i faqes. Pasi të keni parë këtë:

Zbulova se kontrollet duhet të rifillohen përpara ngarkimit të faqes, d.m.th. në Page_Init, ndryshova pak kodin në mënyrë që në metodën _displaySingleQuestion() i thashë seancës se cili ishte ID-ja e pyetjes dhe më pas thirra metodën në Page_Init kështu që kontrollet për Pyetja aktuale ishin në faqen për t'u pyetur me metodën e ruajtjes.

    public void Page_Init(object sender, EventArgs e)
    {
        logger.Debug("Page_Init START");
        if (!Page.IsPostBack) { Session["qid"] = 0; }
        int qid = Convert.ToInt32(Session["qid"]);
        if (qid > 0)
        {
            _displaySingleQuestion(_formObject, qid);
        }
        logger.Debug("Page_Init END");
    }

Kjo do të thoshte gjithashtu se AsyncFileUpload duhej të rifillohej përpara se faqja të mund të vazhdonte, pasi kjo është bërë, metoda ime e regjistrimit tani po regjistron që ngjarja fileuploadClick() po thirret me sukses.

Shënim, unë shtova rreshtin

 if (!Page.IsPostBack) { Session["qid"] = 0; }

Kështu që do të përpiqej të merrte vetëm vlerat në një faqe postback të pjesshme dhe jo në një faqe të plotë, si p.sh. kur faqja ngarkohet për herë të parë.

13.12.2011
  • Faleminderit për zgjidhjen e problemit tuaj +1 13.12.2011
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..