23 messaggi dal 11 aprile 2001
Buona sera a tutii...
ho un problema su una dll che sto scrivendo, raccattando codice sparso ;-)

public class CustomPage : Page
{
protected Literal inputViewState;
protected Literal outputText;
public CustomPage()
{
}
protected override Object LoadPageStateFromPersistenceMedium()
{
LosFormatter format = new LosFormatter();
String viewState = HttpContext.Current.Request.Form["__VIEWSTATE"].ToString();
return format.Deserialize(viewState);
}
protected override void SavePageStateToPersistenceMedium(Object viewState)
{
LosFormatter format = new LosFormatter();
StringWriter writer = new StringWriter();
format.Serialize(writer, viewState);
this.inputViewState.Text = "<input type=\"hidden\"name=\"__VIEWSTATE\" value=\"" + writer.ToString() + "\"/>";
}
}
public class CustomForm : HtmlForm
{
public CustomForm(){
}

protected override void RenderAttributes(HtmlTextWriter output) {
output.WriteAttribute("id", this.ID);
output.Write(" runat=server");
}

protected override void RenderChildren(HtmlTextWriter output)
{
foreach(Control c in base.Controls)
{
c.RenderControl(output);
}
}

}
----------------------------------------------------------
Nella pagina aspx ho registrato il tagprefix e ho messo il tag form "Custom Form".
Bene se lascio solo questo tag viene renderizzato correttamente e validabile xhtml...
ma se aggiungo un <asp:textbox id="prova"> allora il debugger mi dice che un asp:textbox deve essere contenuto in un form runat=server.

Avete qualche idea... la funzione renderchildren() probabilmente non funziona perche non trova i figli...

Grazie mille per l'attenzione
Un saluto
Beh le textbox devono stare dentro ad un form runat="server" vuol dire un controllo Form, ma tu lo butti fuori con output.Write(" runat=server");
Non capisco bene cosa vuoi fare, hai riscritto una parte di HtmlForm.
Praticamente devi fare così
<custom:CustomForm runat="server">
<asp:TextBox id="pippo" runat="server" />
</custom:CustomForm>

Ciao

Il mio blog
Homepage
23 messaggi dal 11 aprile 2001
Innanzi tutto grazie mille...
cmq il controllo <asp:textbox ... /> ce lo metto nella pagina aspx

<customform>
<asp:textbox id "mytext" runat="server" />
</customform>

ma ricevo l'errore che deve essere incluso in un tag form con runat server...

Duccio
23 messaggi dal 11 aprile 2001
Allora nella pagina aspx ho scrippo:

<extendi:CustomForm runat="server">
<asp:TextBox id="Mytxb" runat="server">
</extendi:CustomForm>

nella dll:
namespace extendi.render
{
public class CustomPage : Page
{
private Boolean _fOnFormRenderCalled = false;
protected Literal inputViewState;
protected Literal outputText;
public CustomPage(){}
internal void OnFormRender(){
if(this._fOnFormRenderCalled)
{throw new HttpException("A page can have only one visible server-side CustomForm tag");
}
else
{
this._fOnFormRenderCalled = true;
}
}
[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand,Name="FullTrust")]
protected override Object oadPageStateFromPersistenceMedium()
{
LosFormatter format = new LosFormatter();
String viewState = HttpContext.Current.Request.Form["__VIEWSTATE"].ToString(CultureInfo.CurrentUICulture);
return format.Deserialize(viewState);
}

[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand,Name="FullTrust")]
protected override void SavePageStateToPersistenceMedium(Object viewState)
{
LosFormatter format = new LosFormatter();
StringWriter writer = new StringWriter(CultureInfo.CurrentUICulture);
format.Serialize(writer, viewState);
this.inputViewState.Text = "<input type=\"hidden\" name=\"__VIEWSTATE\" value=\"" + writer.ToString() + "\"/>";

public class CustomForm : HtmlForm
{
public CustomForm()
{
}
[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand,Name="FullTrust")]
protected override void RenderChildren(HtmlTextWriter output)
{
((CustomPage)this.Page).OnFormRender();
foreach(Control c in base.Controls)
{
c.RenderControl(output);
}
}
[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand,Name="FullTrust")]
protected override void RenderAttributes(HtmlTextWriter output)
{
output.WriteAttribute("id", "_ct10");
output.WriteAttribute("action", "#");
output.WriteAttribute("method","Post");
output.WriteAttribute("onsubmit","if (!ValidatorOnSubmit()) return false;");
}
}
}


Chiaramente la pagina aspx deriva da CustomPage.
Se non metto il web control
"textBox".. la pagina aspx non da errori
e viene renderizzata nel modo corretto cioè validata xHtml.
Se aggiungo la asp:TextBox invece mi da errore e mi dice che deve stare in un tag form con runat server.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.