webForumDet fria alternativet

Ladda in UserControl med HtmlForm med jQuery

.NET

1 svar · 428 visningar · startad av PBF

Medlem sedan mars 200657 inlägg
Frågan#1

Tjenare!

Har en profilmeny för varje användare där länken är i detta format: Profile.aspx?Id=584.

Profilmenyn är uppbyggd av jQuery.tabs() och varje gång man klickar på en flik så körs en jQuery.ajax-GET mot en Generic Handler (*.ashx) som hämtar en användarkontroll och konverterar denna till en String som jag sedan addera i flikens content-<div>. Detta gör jag med följande kod:

                    string userControl = context.Request.QueryString["userControl"].ToString();
    
                    string fullPath = path + userControl + ext;
    
                    string userControlOutput = [I]UserControlUtilities.ControlAsString(fullPath);[/I]
    
                    context.Response.Write(userControlOutput);

Om man har serverkontroller vilket jag givetvis har i mina användarkontroller så krävs det en <form>-tagg runt dessa när de laddas in dynamiskt som i mitt fall. Denna skapar jag programmatiskt i min UserControlUtilities**.ControlToString()**-metod som ser ut som följer:

     public static string ControlAsString(string ucPath) {
    
                Page page = new Page();
                page.EnableViewState = false;
                UserControl userControl = page.LoadControl(ucPath) as UserControl;
    
                HtmlForm form = new HtmlForm();
    
                form.ID = "ProfileForm";
               
               form.Controls.Add(userControl);
  
               page.Controls.Add(form);
   
               StringWriter writer = new StringWriter();
   
               HttpContext.Current.Server.Execute(page, writer, true);
   
               return writer.ToString();
           }

<form>-taggen renderas såhär i Html-koden...
<form id="ProfileForm" onsubmit="javascript:return WebForm_OnSubmit();" action="/GenericHandlers/ProfileMenu.ashx" method="post" name="ProfileForm">

... vilket betyder att varje gång det sker en knapptryckning eller nåt likande så skickas man till <form>-taggens Action-attribut då den skapas i min Generic Handler (ProfileMenu.ashx).

Jag har försökt att programmatiskt sätta form.Action = "Profile.aspx?Id=584"; i ControlToString(), då postas man till rätt adress men knappen/dropdownlist eller nåt annat som har ett Event av nåt slag körs aldrig.

Någon som upplevt detta tidigare? Har ni nåt förslag på lösning?

Medlem sedan mars 200657 inlägg
#2

Hörde att jag måste skapa alla serverkontroller som finns i mina användarkontroller dynamiskt i samband med att jag laddar in användarkontrollen, det blir ett grovt jobb i så fall då jag har väldigt många användarkontroller med serverkontroller.

Det måste finnas en alternativ lösning?

254 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)