Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Variable in einem Jave Script setzen

2 views
Skip to first unread message

Ingo Manthey

unread,
May 23, 2010, 12:36:31 PM5/23/10
to
Hallo NG,

ich habe folgenden java-Script:
<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-99999999-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();

</script>

Ich m�chte gerne die variable vom C# Code aus gesetzt haben. Leider habe ich
�berhaupt keinen Plan wie das geht.


Danke f�r jeden Hinweis und Tipp.


Gr��e Ingo

Stefan Falz [MVP]

unread,
May 23, 2010, 2:42:08 PM5/23/10
to
Hallo Ingo,

"Ingo Manthey" schrieb:

> Ich m�chte gerne die variable

welche?

> vom C# Code aus gesetzt haben. Leider habe ich �berhaupt keinen Plan wie das geht.

Du kannst entweder den kompletten Scriptblock per Code erzeugen

http://msdn.microsoft.com/de-de/library/bahh2fef.aspx

oder den gew�nschten Part bspw. durch <%=Variable %> einf�gen.

--
Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ingo Manthey

unread,
May 24, 2010, 9:22:26 AM5/24/10
to
HAllo Stefan,

danke f�r die Hilfe und den Link!!
Leider ist mir nicht klar wie ich den Zugriff �ber <%=Variable %>
hinbekommen kann.
Beispiel so sieht das original Text aus:
<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-123456789-1']);
_gaq.push(['_trackPageview']);

Wenn ich nun die Variable <%GOOGLEID%> einf�ge

<script type="text/javascript">

var _gaq = _gaq || [];
_gaq.push(['_setAccount', <%GOOGLEID%>]);
_gaq.push(['_trackPageview']);

Wie greife ich dann im C# Code auf diese Variable zu???

Gr��e Ingo

Stefan Falz [MVP]

unread,
May 24, 2010, 11:44:28 AM5/24/10
to
Hallo Ingo,

"Ingo Manthey" schrieb:

> Wenn ich nun die Variable <%GOOGLEID%> einf�ge


>
> <script type="text/javascript">
>
> var _gaq = _gaq || [];
> _gaq.push(['_setAccount', <%GOOGLEID%>]);

_gaq.push(['_setAccount', <%=GOOGLEID %>]);
------------------------------^

oder

_gaq.push(['_setAccount', <%# GOOGLEID %>]);
------------------------------^^

> Wie greife ich dann im C# Code auf diese Variable zu???

gar nicht, GOOGLEID _ist_ dann die Variable (oder Methode
oder Property).

Wenn Du einen DataBinding Ausdruck <%# ... %> verwendest,
musst Du ggfs. noch <Control>.DataBind() aufrufen. F�r
Bl�cke, die separat ohne Servercontrol da stehen, kann man
das gezielt bspw. �ber ein Placeholder Control machen.

---

<asp:Placeholder ID="MyPlaceholder" runat="server">
...
_gaq.push(['_setAccount', <%# GOOGLEID %>]);
...
</asp:Placeholder>

...

MyPlaceholder.DataBind()

---

Ingo Manthey

unread,
May 24, 2010, 1:17:57 PM5/24/10
to
Hallo Stefan,

danke f�r die Hilfen. Aber das bringt mich leider alles nicht viel weiter.
Grund:
Ich m�chte gerne das die ID f�r das Google Analytic variable ist. Weil die
Homepage von verschiedenen Firmen genutzt wird.
Ich kann die Variable ja nicht mit irgend einem Control binden.

Dein Tipp den ich sehr gut finde den Script per Code erzeugten funktioniert
leider nicht, da lt. Google der Script der erste sein soll und gleich nach
dem <body> stehen soll.

Wenn ich Script per Programm setzt dann ist er leider nicht an erster
Stelle.
Gibt es da noch eine andere L�sung?

Danke

Gr��e Ingo


Stefan Falz [MVP]

unread,
May 24, 2010, 1:49:22 PM5/24/10
to
Hallo Ingo,

"Ingo Manthey" schrieb:

> danke f�r die Hilfen. Aber das bringt mich leider alles nicht viel weiter.

ein Problem sind die fehlenden ASP.NET Grundlagen. Ohne die kommen wir hier
leider nicht wirklich weiter.

> Ich m�chte gerne das die ID f�r das Google Analytic variable ist. Weil die Homepage von verschiedenen Firmen genutzt wird.
> Ich kann die Variable ja nicht mit irgend einem Control binden.

Warum nicht? Genau das _kann_ man so problemlos machen.

---

<html>
<body>
<asp:PlaceHolder ID="GoogleDingens" runat="server">


<script type="text/javascript">
var _gaq = _gaq || [];

_gaq.push(['_setAccount', '<%# Me.GoogleId %>']);


_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>

</body>
</html>

---

CodeBehind

---

Class MyPage

Private _GoogleId As String = String.Empty

Public Property GoogleId As String
Get
Return _GoogleId
End Get
Set
_GoogleId = Value
End Set
End Property

Public Sub Page_Load( ... ) Handes Me.Load

If 1 = 2 Then
Me.GoogleId = "Abc"
ElseIf 5 = 5
Me.GoogleId = "Def"
End if

End Sub

Public Sub Page_PreRender( ... ) Handes Me.PreRender

' --- Ohne GoogleId wird der Script Tag nicht angezeigt
If String.IsNullOrEmpty( Me.GoogleId ) Then
GoogleDingens.Visible = False
Else
' --- Binden des Containers, damit das DataBinding
' --- Konstrukt <%# Me.GoogleId %> aufgel�st wird.
GoogleDingens.DataBind()
End if

End Sub

End Class

---

> Dein Tipp den ich sehr gut finde den Script per Code erzeugten funktioniert leider nicht, da lt. Google der Script der erste sein
> soll und gleich nach dem <body> stehen soll.

Und? In dem Fall h�ttest Du bspw. einen Placeholder an der gew�nschten Stelle
und w�rdest den JavaScript Code bspw. als Literal erstellen und dann dieses
Literal Control in den Placeholder einf�gen.

---

Dim GoogleCode As String
GoogleCode = "<script ...>...</script>"

Dim Container As New Literal()
Container.Text = GoogleCode

GoogleDingens.Controls.Add( Container )

---

> Wenn ich Script per Programm setzt dann ist er leider nicht an erster Stelle.

Allerdings habe ich noch nicht erlebt, dass der Tag wirklich direkt hinter
body stehen muss. Bei den meisten Seiten steht der ganz am Ende oder irgendwo
mittendrin und da gibt es auch keinerlei Probleme.

Stefan Falz [MVP]

unread,
May 24, 2010, 1:52:33 PM5/24/10
to
> </script>
> </body>
> </html>

da fehlt nat�rlich noch ein </asp:PlaceHolder> f�r </body>

Ingo Manthey

unread,
May 24, 2010, 2:50:09 PM5/24/10
to
Hallo Stefan,

1.000 Dank f�r Deine Hilfe.
Klar ist das Problem meine fehlenden ASP.NET Grundlagen. Ohne Deine Hilfe
h�tte ich das nie geschafft.

Noch einmal 1.000 Danke f�r Deine M�he.

Gr��e Ingo

0 new messages