Avatar billede neesgaard Mester
13. januar 2022 - 16:13 Der er 2 kommentarer

Overførsel af en Javascript variabel værdi til .NET codebehind

Nu har jeg søgt Google tynd og det ser ikke ud til, at der er nogen direkte måde at gøre dette på. Jeg har fundet et forslag her:
https://www.codeproject.com/Questions/708697/Pass-javascript-variables-value-to-Csharp-code-beh

og det beskriver en måde:

<u>Opret et hidden-felt på HTML-siden:</u>
<asp:HiddenField ID="hdnfldVariable" runat="server" />

<u<Indfør dette JavaScript på tag-siden:</u>
<script type="text/javascript">
        var somefunction = function () {
            var hdnfldVariable = document.getElementById('hdnfldVariable');
            hdnfldVariable.value = 'value from javascript';
        }
    </script>

<u>Og aflæs værdien i codebehind:</u>
string variable = hdnfldVariable.Value;  (C#) eller
Dim variable As String = hdnfldVariable.Value  (VB)

Problem: 'variable' er tom, nbår jeg kører det, hvor jeg har indsat en fast værdi for  'value from javascript'.

Hvad kan være galt?
Avatar billede arne_v Ekspert
14. januar 2022 - 02:57 #1
Du er opmærksom på rækkefølgen?

1) .NET kode kører server side første gang
2) JavaScript kører client side
3) .NET kode kører server side ved post back
Avatar billede neesgaard Mester
15. januar 2022 - 17:09 #2
arne_v ->
Tak fordi du henleder min opmærksomhed på dette! Det er umiddelbart to ting galt:

1/ Jeg havde sat aflæsningen i Protected Sub Page_Load og dette duer ikke af grunden, som du skriver.
2/ Jeg kan se, at det skal være:
document.getElementById('<%=hdnfldvariable.ClientID%>').value
i stedet for det, jeg havde skrevet - ref. https://social.msdn.microsoft.com/Forums/en-US/ddb90b56-e414-4934-bffc-c9e37887b670/how-to-access-java-script-variables-at-code-behind-in-c?forum=asphtmlcssjavascript/3. indlæg

Så dette kan jeg få til at fungere (hiddenfield placeret som før) sådan her:

java script:
<script type="text/javascript">
  var x = 'Test af variabel'
  document.getElementById('<%=hdnfldvariable.ClientID%>').value = x;
</script>

Codebehind:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  Dim variable As String = hdnfldvariable.Value
  Label1.Text = variable
End Sub

men hvis jeg laver det som et JS funktionskald, så går det galt (Er altså ikke så god til JS):

function test99() {
  var x = 'Test af variabel'
  document.getElementById('<%=hdnfldvariable.ClientID%>').value = x;
}

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  Page.ClientScript.RegisterStartupScript(Me.GetType(), "CurrentLocation", "test99();", True)
  Dim variable As String = hdnfldvariable.Value
  Label1.Text = variable
End Sub

Det virker stadig ikke, hvis jeg også har en anden knap til at udføre en postback.

Håber du kan bringe mig videre for jeg har godt nok brugt meget tid på problemet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester