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:
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:
Kod:
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?