webForumDet fria alternativet

värde i codebehind till en variabel i <script>

6 svar · 629 visningar · startad av Metatron

MetatronMedlem sedan dec. 200697 inlägg
#1

Har hittat flera exempel på nätet där man använder en literal. Dvs att man i codebehind helt enkelt sätter värdet Lat.Text = "Texten jag vill ha".

Detta får jag dock inte att fungera.

<script type="javascript">

            function confirmSubmit()
            {
                var popuptext = <asp:Literal ID="Lat" runat="server" />; 

                
                if (document.applets["canvas"].IsChanged() == true)
                {
                    var agree=confirm(popuptext);
                    
                    
                    if (agree)
	                    return true;
                    else
	                    return false ;
                    }
                else
                    return true;
            }
 </script>

Tanken är att beroende på användare skall olika meddelande visas på denna confirm popup. Om jag sätter värdet på variabeln popuptext till tex "hej" funkar det utmärkt men med literal funkar det inte. Jag får inget felmeddelande och ingen popup dyker upp när jag använder en literal.

Hur skall jag göra?

voigtann1Medlem sedan juni 20019 519 inlägg
#2

... vad säger din "visa" källkod då?
...

Provade skriva en blank sida:
<asp:Literal ID="Literal1" runat="server"></asp:Literal>

Får du nog skriva... då Literal inte är någon tagg...

Testade vidare.. fungera på båda..
men har du "" med i din literal ?

MetatronMedlem sedan dec. 200697 inlägg
#3

Hade inte kollat det men den visar rätt värde där:

var popuptext = Den text jag skrivit

Dock inga "" eller '' spelar det någon roll?

Hur ska jag göra för att få " " på literalen då?

Har ju i codebehind Lat.Text = "Den text jag skrivit";

Kan jag ange snuttar på något annat ställe?

voigtann1Medlem sedan juni 20019 519 inlägg
#4

... ja det spelar roll....
javascripten har ingen variabel som heter "Den", "text", "jag", "skriver"... så det är ju nollat... "Detta är en sträng" är en sträng... du skriver ju

string MyString = "Detta är ett sträng";

i C# och inte

string MyString = Detta är ett sträng
<script type="javascript">

            function confirmSubmit()
            {
                var popuptext = "<asp:Literal ID="Lat" runat="server" />";

                
                if (document.applets["canvas"].IsChanged() == true)
                {
                    var agree=confirm(popuptext);
                    
                    
                    if (agree)
	                    return true;
                    else
	                    return false ;
                    }
                else
                    return true;
            }
 </script>

är det korrekta resultatet du är ute efter :)

Din code-behind kod ger ju resultatet:
Den text jag skrivit
och inte:
"Den text jag skrivit"

javascript är inte HTML.. det är ju ändå ett skriptspråk.

MetatronMedlem sedan dec. 200697 inlägg
#5

Var så nära lösningen redan, hade trollat bort mig själv. Man bryter ihop när det igentligen är enkelt men man stökar till det för sig. Popupen hade slutat fungera det var därför jag inte fick något svar. Hade gjort en liten ändring som ställde till det.

Tusen tack för hjälpen.

emissionMedlem sedan dec. 19996 721 inlägg
#6

Tänk på att det är vettigt att Javascript-koda den text som man lägger in. Annars kan man sabba skriptet med fel sträng.

Själv brukar jag använda AJAX-bibliotekets System.Web.Script.Serialization.JavaScriptSerializer.Serialize, men om man inte har tillgång till den så ser den ut ungefär så här:

http://www.west-wind.com/weblog/posts/114530.aspx

butikoMedlem sedan jan. 2007152 inlägg
#7

Ett litet tips också i kategorin onödig kod... :) Den här raden:

if (document.applets["canvas"].IsChanged() == true)

...är samma sak som att skriva:

if (true|false == true)

...eftersom IsChanged() (förhoppningsvis) returnerar en bool. Då uttrycket i sig redan innehåller true eller false räcker det att skriva:

if (document.applets["canvas"].IsChanged())

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)