Francesco Geri

Il blog di Francesco Geri
posts - 87, comments - 342, trackbacks - 2

My Links

News



Anch'io metto nel mio blog cose che scrivo così, tanto per fare, tanto per condividere miei appunti, senza prendermi la briga di garantirne l'infallibilità, né l'assoluta correttezza, senza pretese e con grande umilté.

Quanti mi hanno visto dal 25/10/2007:
...dettagli

Quanta gente che c'è in questo blog!!

site statistics

Archives

Post Categories

Altre

Blogs

[ASP.NET 2.0] Master Page e l'ID del form perduto!

Migrando in ASP.NET 2.0 una mia appicazione fatta in ASP.NET 1.1 mi sono imbattuto in una situazione un po' spiacevole...

Se una webform ASP.NET 2.0 ha una master page con un certo form quando viene renderizzata quel form avrà come ID la costante "aspnetForm"!

Anche eventuali controlli client messi la dentro avranno un nuovissimo ID. Vediamo un esempio.

Facciamo un'applicazione con una master page così:

<%@ Master Language="VB" AutoEventWireup="false"
CodeBehind="MyMaster.master.vb" Inherits="WebApplication1.MyMaster" %>

<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="myFormID" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

ed un web form così:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="MyWebForm.aspx.vb" Inherits="WebApplication1.MyWebForm"  MasterPageFile="~/MyMaster.Master"%>

<asp:Content ContentPlaceHolderID=ContentPlaceHolder1 ID="myPHID" runat=server>
<input type=file id="myInputID" runat=server />
</asp:Content>

Proviamo a mandarlo in esecuzione et voilà cosa ci restituisce il browser:

<html>
<head><title>
 Untitled Page
</title></head>
<body>
    <form name="aspnetForm" method="post" action="MyWebForm.aspx" id="aspnetForm" enctype="multipart/form-data">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="...#@qualcosa!..." />
</div>
    <div>
<input name="ctl00$ContentPlaceHolder1$myInputID" type="file" id="ctl00_ContentPlaceHolder1_myInputID" />
    </div>
    </form>
</body>
</html>

In rosso sono evidenziati i nuovi ID!
La mia domanda è: perché? Come mai c'è stata l'esigenza di fare questo? Che male c'era a lasciare l'ID messo all'inizio dal programmatore (o direttamente da visual studio!)?

Il problema nella mia applicazione è che la mia pagina ha degli script javascript che dovrebbero accedere a quegli oggetti, e lo fanno sfruttando quegli ID che purtroppo sono andati persi!
Beh, un altro modo per fare gli script lo si trova, ok, ma il preché di questo comportamento non lo capisco proprio!!

Ciao!

Print | posted on mercoledì 15 novembre 2006 18.06 | Filed Under [ ASP.NET 2.0 ]

Powered by: