C# JS

Czasami w twojej aplikacji pojawia się scenariusz związany z przekazaniem informacji “X” z JavaScript do C#.

W tym wypadku prezentuję sytuację, w której przycisk ma wykonywać daną operację w C# tylko, gdy użytkownik sam wcześniej potwierdził wykonanie tej operacji w JavaScript.

Wbrew pozorom jest to częsty scenariusz , a oto najprostsze rozwiązanie. Na stronie HTML umieszczamy kontrolkę “Hidden”. Jest to zwykła kontrolka HTML więc może być manipulowana za pomocą JavaScript bez problemów. 

Input (Hidden)Jeśli ustawimy właściwość tej kontrolki na “runat=”server” , to będzie można do niej uzyskać dostęp w kodzie serwerowym w C#. W kodzie poniżej znajduje się funkcja JavaScript “zapisInformacji()”.

Wywoła ona okno dialogowe i w zależności od decyzji użytkownika zapisze inną informację w kontrolce “hidden”. Funkcja ta jest wywoływana przy naciśnięciu przycisku.

<%  @  Page  Language="C#"  AutoEventWireup="true"  CodeBehind="Page.aspx.cs"  Inherits="PopUp.Page"  ViewStateMode="Disabled"   %>  
<!DOCTYPE  html  PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 

<html  xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1"  runat="server"> 
    <title> Przekazywanie wartosci z JavaScript do C# ASP.NET</title> 
    <script  type="text/javascript">
        function zapisInformacj() {
            var dana;


            if (confirm("Chcesz wykonac operacje X") == true)
                dana = true;
            else
                dana = false;


            document.getElementById("Hidden1").value = dana;
        } 

    </script>  
</head> 
<body>  
    <form  id="form1"  runat="server">  
        <input  id="Hidden1"  type="hidden"  runat="server"  />  
        <asp:Button  ID="btn"  runat="server"  OnClientClick="zapisInformacj()"   Text="Operacja X"   
            onclick="btn_Click"/> 
    </form>  
</body> 
</html> 

Po stronie serwer w C# wywoła się zdarzenie kliknięcia dla przycisku, który ma wywołać operacje “X” pod warunkiem , że użytkownik wyraził zgodę. Jak widać w kodzie poniżej odczytanie wartości kontrolki “Hidden” jest banalnie proste.

using System;

namespace PopUp
{
    public partial class Page : System.Web.UI.Page
    {
        protected void btn_Click(object sender, EventArgs e)
        {
            if (Hidden1.Value == "true")
            {
                Response.Write("Wykonałeś operacje X");
            }
            else
            {
                Response.Write("operacja X została odrzucona przez ciebie");
            }
        }
    }
}

Ważna jest jednak kolejność wykonywanych operacji. Jeśli kod po stronie serwera wykona się najpierw to nie osiągniemy zamierzonego efektu. Standardowo operacje dla przycisku po stronie klienta uruchamiają się najpierw.

JavaScript gada z C#

 wykonałeś operacje X