DotNetCampania
Il primo portale campano dedicato allo sviluppo software con tecnologie Microsoft

Incorporare un video di youtube in un detail view a partire dal link

rated by 0 users
This post has 11 Replies | 2 Followers

Top 10 Partecipanti
Maschio
Post 87
Punteggio 1.295
Nezumi Posted: 5 lug 2009 13:34

La descrizione del problema è di una banalità allucinante:

a partire da link di un video di youtube (ad esempio "http://www.youtube.com/watch?v=qp9YBQkVJ14") che salvo in un db insieme alla descrizione ed altri dati sullo stesso

vorrei che nel detailView potessi inserire il codice per incorporare il video (in modo da mostrarne un'anteprima)

il codice per l'incorporazione (quello che youtube fornisce per ogni video) è il seguente

<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/qp9YBQkVJ14&hl=it&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01">
</param>
<param name="allowFullScreen" value="true">
</param>
<param name="allowscriptaccess" value="always">
</param>
<embed src="http://www.youtube.com/v/qp9YBQkVJ14&hl=it&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
</embed>
</object>

In grassetto potete notare l'identificativo del video

ora le mie domande sono (se mi rispondente sarebbe gradito del codice) :

  1. mi conviene trimmare il codice via dal link e salvare solo quello sul db?
  2. oppure (la soluzione che volevo adottare io) nel code behind della aspx che contiene il DetailView trimmare il codice del video e passarlo come "parametro" alla pagina in modo da poterne fare l'eval nel templateField che ospiterà l'anteprima

spero di essere stato chiaro nella descrizione del problema

 

Top 10 Partecipanti
Maschio
Post 292
Punteggio 3.817

Nezumi:

La descrizione del problema è di una banalità allucinante:

a partire da link di un video di youtube (ad esempio "http://www.youtube.com/watch?v=qp9YBQkVJ14") che salvo in un db insieme alla descrizione ed altri dati sullo stesso

vorrei che nel detailView potessi inserire il codice per incorporare il video (in modo da mostrarne un'anteprima)

il codice per l'incorporazione (quello che youtube fornisce per ogni video) è il seguente

<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/qp9YBQkVJ14&hl=it&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01">
</param>
<param name="allowFullScreen" value="true">
</param>
<param name="allowscriptaccess" value="always">
</param>
<embed src="http://www.youtube.com/v/qp9YBQkVJ14&hl=it&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
</embed>
</object>

In grassetto potete notare l'identificativo del video

ora le mie domande sono (se mi rispondente sarebbe gradito del codice) :

  1. mi conviene trimmare il codice via dal link e salvare solo quello sul db?
  2. oppure (la soluzione che volevo adottare io) nel code behind della aspx che contiene il DetailView trimmare il codice del video e passarlo come "parametro" alla pagina in modo da poterne fare l'eval nel templateField che ospiterà l'anteprima

spero di essere stato chiaro nella descrizione del problema

 

Vediamo se ho capito bene: nel db tu hai solo l'identificativo del sito, e lo vuoi passare tramite eval al details view? Se si, vuoi sapere come memorizzare il tuo identificativo avendo in input per esempio

http://www.youtube.com/watch?v=qp9YBQkVJ14

Dico bene?

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 87
Punteggio 1.295

si in pratica voglio memorizzare nel db il link che youtube mette a disposizione per l'accesso diretto al video sul proprio sito e voglio che in fase di recupero dal db io possa parsare la stringa (il link) e tirarne fuori solo l'identificativo (perchè solo quello resta uguale tra il link diretto e l'incorporazione) così da poter nel detailView fare l'eval del solo identificativo e costruirmi tutti i tag per incorporare in questo modo:

<%# eval("idVideo","

<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/{0}&hl=it&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01">
</param>
<param name="allowFullScreen" value="true">
</param>
<param name="allowscriptaccess" value="always">
</param>
<embed src="http://www.youtube.com/v/{0}&hl=it&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
</embed>
</object>");

 

(perdonami se mancano tutti gli escape e la concatezione di ogni singola stringa per riga)

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 292
Punteggio 3.817

Per recuperare l'id, considerando che il link abbia sempre la stessa sintassi ti consiglio un piccolo tricks che si usa molto in javascript ed è il LastIndexOf

 

Dim str As String = "http://www.youtube.com/watch?v=qp9YBQkVJ14"

Dim idVideo As String = str.Substring(str.LastIndexOf("=") + 1)

 

Con questo codice dovresti sempre recuperare l'id del video. Cmq nel db per comodità puoi anche memorizzare direttamente l'id, senza tutta la parte http://... Per ciò che riguarda la visualizzazione, la stringa con l'eval nel details view dovrebbe andare bene.

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 87
Punteggio 1.295

capito...la tua mi sembra una buona soluzione nel frattempo ho trovato su internet quello che cercavo

nel code behind:

VB.NET

Dim str As String = DataBinder.Eval(e.Row.DataItem, "ProductID")

C#

String str = DataBinder.Eval(e.Row.DataItem, "ProductID")


non sono sicuro che "e" abbia una property che si chiama "Row" ma il concetto credo sia questo

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 292
Punteggio 3.817

Nezumi:

capito...la tua mi sembra una buona soluzione nel frattempo ho trovato su internet quello che cercavo

nel code behind:

VB.NET

Dim str As String = DataBinder.Eval(e.Row.DataItem, "ProductID")

C#

String str = DataBinder.Eval(e.Row.DataItem, "ProductID")


non sono sicuro che "e" abbia una property che si chiama "Row" ma il concetto credo sia questo

 

Quello che tu hai scritto è praticamente uguale a quello che io ho scritto. Questa cosa dell'eval la puoi fare nella pagina aspx piuttosto che nella part di code-behind. Scegliere l'una o l'altra dipende essenzialmente da quello che devi fare tu. Se devi prendere l'id così com'è e metterlo in una stringa (con il format - {0}) puoi farlo tramite aspx. Se invece hai necessità di fare altre computazioni dai dati recuperati dal db, tipo una modifica particolare alla stringa, puoi usare il codice da code-behind. Dal punto di vista delle prestazioni, e ringrazio Michele per il tip, le due soluzioni sono uguali.

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 87
Punteggio 1.295

ti ringrazio per i consigli, proverò anche la soluzione che mi hai proposto,così da poter tenere in considerazione entrambi i metodi di elaborazione, lato server e lato client

Grazie ancora AntonioWink

ps: conto su di te per i prossimi problemi che incontrerò

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 292
Punteggio 3.817

Nezumi:

ti ringrazio per i consigli, proverò anche la soluzione che mi hai proposto,così da poter tenere in considerazione entrambi i metodi di elaborazione, lato server e lato client

Lato server, lato client? Entrame le soluzioni sono lato server, mettere l'eval nella pagina aspx non significa interagire con il lato client. Entrambe sono modifiche lato server, perchè ASP.NET è una tecnologia server-side. Con il termine lato client, in genere si definisce un insieme di script, come ad esempio javascript, che vengono eseguiti direttamente sul pc della persona che sta accedendo alla risorsa web. Nel nostro caso, sia la pagina aspx che quella aspx.vb/aspx.cs vengono unite in compilazione dal runtime del .Net e poi viene inviata l'intero codice in XHTML verso la macchina che sta usufruendo della risorsa web.

In pratica, e sottolineo fortemente questa cosa, aspx e aspx.vb sono 2 facce della stessa medaglia, infatti se tu vai nella parte aspx.vb, leggerai nel momento in cui viene dichiarata la classe, che è una Partial Class!

Nezumi:

Grazie ancora AntonioWink

ps: conto su di te per i prossimi problemi che incontrerò

anytime you need! Io sono quà e cercherò di risponderti in tempi brevi :)

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 87
Punteggio 1.295

ehm...devo essermi perso qualcosa perchè in un tuo post ho letto di javascript...devo aver frainteso

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 292
Punteggio 3.817

Nezumi:

ehm...devo essermi perso qualcosa perchè in un tuo post ho letto di javascript...devo aver frainteso

Si nel precedente, sottolineando che javascript è uno script client-side, ma quando si tratta si aspx si parla sempre di codice server-side.

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 87
Punteggio 1.295

lo so...per lato client intendevo javascript...va bè alla fine è un'incomprensione ^_^ e si finisce OT così

 

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 292
Punteggio 3.817

Stick out tongue

Capisc e dotnet tu? No! E allor che parl a fà!

  • | Punteggio Post: 5
Pagina 1 di 1 (12 elementi) | RSS

Associazione Culturale DotNetCampania - C.F.: 95127870632

Powered by Community Server (Commercial Edition), by Telligent Systems