Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Problema con post-back e linkButton
venerdì 12 dicembre 2008 - 10.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Gemini
Profilo
| Expert
856
messaggi | Data Invio:
ven 12 dic 2008 - 10:47
Ciao a tutti,
sto realizzando un sito che prevede dei banner pubblicitari nell'ntestazione. Banner che posso essere in formato flash o semplici immagini, e questi cambiano ogni volta che carico una pagina. Quando clicco sul banner voglio gestire l'evento click.
Ho realizzato una masterpage e all'interno inserisco un controllo utente nel quale carico i banner.
Codice controllo utente:
<asp:LinkButton ID="lbBannerIntestazione" runat="server" OnClick="Banner_Click">
<asp:PlaceHolder ID="phBannerIntestazione" runat="server"></asp:PlaceHolder>
</asp:LinkButton>
<asp:LinkButton ID="lbBannerDx" runat="server" OnClick="Banner_Click">
<asp:PlaceHolder ID="phBannerDx" runat="server"></asp:PlaceHolder>
</asp:LinkButton>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
clsTipoBanner banner = new clsTipoBanner();
string banner_code = string.Empty;
banner = clsBanner.getBanner("intestazione");
banner_code = clsBanner.getBannerCode("intestazione", Costanti.width_banner_intestazione, Costanti.height_banner_intestazione);
phBannerIntestazione.Controls.Add(new LiteralControl(banner_code));
lbBannerIntestazione.CommandArgument = banner.id_banner;
banner = clsBanner.getBanner("intestazione_dx");
banner_code = clsBanner.getBannerCode("intestazione_dx", Costanti.width_banner_intestazione_dx, Costanti.height_banner_intestazione_dx);
phBannerDx.Controls.Add(new LiteralControl(banner_code));
lbBannerDx.CommandArgument = banner.id_banner;
}
}
protected void Banner_Click(object sender, EventArgs e)
{
}
Ho due problemi:
1-Il link non mi funziona quando ho un banner in formato flash. Clicco ma non fa nulla
2- Quando clicco su un banner, per esempio in formato jpg, ricevo questo errore:
Argomento di postback o callback non valido. La convalida degli eventi viene abilitata mediante <pages enableEventValidation="true"/> nella configurazione oppure mediante <%@ Page EnableEventValidation="true" %> in una pagina. Per motivi di sicurezza, viene verificato che gli argomenti con cui eseguire il postback o il callback di eventi siano originati dal controllo server che ne aveva inizialmente eseguito il rendering. Se i dati sono validi e previsti, utilizzare il metodo ClientScriptManager.RegisterForEventValidation per registrare i dati di postback o callback per la convalida.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.
Dettagli eccezione: System.ArgumentException: Argomento di postback o callback non valido. La convalida degli eventi viene abilitata mediante <pages enableEventValidation="true"/> nella configurazione oppure mediante <%@ Page EnableEventValidation="true" %> in una pagina. Per motivi di sicurezza, viene verificato che gli argomenti con cui eseguire il postback o il callback di eventi siano originati dal controllo server che ne aveva inizialmente eseguito il rendering. Se i dati sono validi e previsti, utilizzare il metodo ClientScriptManager.RegisterForEventValidation per registrare i dati di postback o callback per la convalida.
Errore nel codice sorgente:
Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione dell'eccezione, vedere l'analisi dello stack dell'eccezione riportata di seguito.
Analisi dello stack:
[ArgumentException: Argomento di postback o callback non valido. La convalida degli eventi viene abilitata mediante <pages enableEventValidation="true"/> nella configurazione oppure mediante <%@ Page EnableEventValidation="true" %> in una pagina. Per motivi di sicurezza, viene verificato che gli argomenti con cui eseguire il postback o il callback di eventi siano originati dal controllo server che ne aveva inizialmente eseguito il rendering. Se i dati sono validi e previsti, utilizzare il metodo ClientScriptManager.RegisterForEventValidation per registrare i dati di postback o callback per la convalida.]
System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +260
System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +83
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +52
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +244
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3824
Come risolvo questi due problemi?
Grazie mille
Stroke
Profilo
| Junior Member
114
messaggi | Data Invio:
ven 12 dic 2008 - 11:58
Perchè non usi l'oggetto <asp:adrotator> che fa tutte le cose che ti servono e forse qualcosa in più?
http://www.aspcode.it/tips/95_Un-circuito-di-rotazione-banner-in-ASP.net
:-il-componente-AdRotator.htm
ciao
Furio
http://www.opsi.ws
Gemini
Profilo
| Expert
856
messaggi | Data Invio:
ven 12 dic 2008 - 12:44
Grazie,
ma se invece di un file xml, io volessi utilizzare un db o una struttura dati, come faccio?
Come faccio a gestire l'evento click? Prima di fare la redirect devo aggioranare il numero di click nel db.
Stroke
Profilo
| Junior Member
114
messaggi | Data Invio:
ven 12 dic 2008 - 21:18
l'adrotator è collegabile tranquillamente ad un database, e gestisce da solo il link che devi inserire nella tabella.
questa è la query per la creazione della tabella tipo
CREATE TABLE [dbo].[AdbUpBanner](
[Prog] [int] IDENTITY(1,1) NOT NULL,
[ImageUrl] [nvarchar](150) NOT NULL,
[NavigateUrl] [nvarchar](150) NULL,
[AlternateText] [nvarchar](150) NULL,
[Parola chiave] [nvarchar](50) NULL,
[Impressions] [int] NULL,
[Width] [int] NULL,
[Height] [int] NULL,
CONSTRAINT [PK_AdbUpBanner] PRIMARY KEY CLUSTERED
(
[Prog] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
questa la parte html
<asp:AdRotator ID="AdRotator1" runat="server" DataSourceID="SqlDataSource1" Target="_blank" />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:BibMarketDBConnectionString %>"
SelectCommand="BannerAlto" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
e questa la store procedure che chiamo nel sqldatasource
Create PROCEDURE [dbo].[BannerAlto]
AS
BEGIN
SELECT [Prog],
[ImageUrl],
[NavigateUrl],
[AlternateText],
[Parola chiave] AS Parola_chiave,
[Impressions],
[Width],
[Height]
FROM [AdbUpBanner]
END
Impressions praticamente crea una percentuale di visibilità sommando tutte le impressions del tuo db, in pratica puoi dare più impression ad uno piuttosto che ad un altro banner. Il resto è tutto intuibile.
Devi solo riempire il db.
ciao
Furio
http://www.opsi.ws
Gemini
Profilo
| Expert
856
messaggi | Data Invio:
lun 15 dic 2008 - 19:03
se invece di passare un db, voglio passare un tipo strutturato, come lo dichiaro?
Tipo struttura per esempio fatto così:
tipo.ImageUrl
ecc
Stroke
Profilo
| Junior Member
114
messaggi | Data Invio:
lun 15 dic 2008 - 22:41
Per passare file flash su adbanner guarda questi link:
http://aspnet.html.it/script/vedi/4625/adrotator-con-flash/
http://webscripts.softpedia.com/scriptDownload/AdRotator-With-Flash-Files-Download-32759.html
sono la struttura che vai cercando.
Adrotator di suo non accetta file sw, ma solo immagini.
ciao
Furio
http://www.opsi.ws
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !