moe
moe

Reputation: 5249

How to call C# Code from JavaScript

I want to call C# code in the code behind from JavaScript ONLY when the validation in the JavaScript is true. I am facing some issues with this can someone help. Thanks Here is my JavaScript

  <script type="text/javascript">
        function Validate_Checkbox() {
            var chks = $("#<%= cblCustomerList.ClientID %> input:checkbox");

            var hasChecked = false;
            for (var i = 0; i < chks.length; i++) {
                if (chks[i].checked) {
                    hasChecked = true;
                 //call C# code
                    break;
                }
            }
            if (hasChecked == false) {
                alert("Please select at least one checkbox..!");

                return false;
            }

            return true;
        }     
    </script>

here is the C# code that i want to call

 protected void DV_Test_ItemInserting(object sender, DetailsViewInsertEventArgs e)
    {
       do something
    }

Here is the button that calls the JavaScript

<asp:Button ID="Button1" runat="server" CausesValidation="True" 
                            CommandName="Insert" Text="Insert" OnClientClick="javascript:Validate_Checkbox();return true;"/>

Upvotes: 0

Views: 2652

Answers (5)

AlphaOmega
AlphaOmega

Reputation: 720

You need to use Eval. Example:

<script type="text/javascript">
    function Validate_Checkbox() {
        ...
        if (chks[i].checked) {
            hasChecked = true;
            eval("<%= Page.ClientScript.GetPostBackEventReference(lbSubmit, String.Empty) %>");
        }
        ...
    }

<asp:Button ID="Button1" CausesValidation="True"  CommandName="Insert" Text="Insert" OnClientClick="javascript:Validate_Checkbox();return true;" runat="server"/>

<asp:LinkButton ID="lbSubmit" style="display:none" OnClick="slbCheckVin_Click" runat="server"/>

Upvotes: 0

Slawomir Pasko
Slawomir Pasko

Reputation: 907

I think that you should use server side event (Click) with combination of client side event. On the server side:

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

and in the code behind

protected void Button1_Click(object sender, EventArgs e)
{
    //do something here
}

Additionally in your javascript code you should use event.preventDefault() if certain conditions are not met. Please check Mozilla docs for details. The sample code on your client side could looks like (Not tested!):

$(document).ready(function(){
  $('#Button1').click(function(e){
    //some logic to check checkbox status and call e.preventDefault();
  });
});

Upvotes: 0

Ahmed Abdelrazik
Ahmed Abdelrazik

Reputation: 85

we can use Ajax Call with data type

1) json , in this case you will create web method on the code behind and return string to JavaScript as return result

2) HTML , in this case you will call new HTML page and return HTML

Upvotes: 0

Mehdi Bugnard
Mehdi Bugnard

Reputation: 3979

Here is a very good explanation on this topic

1: http://www.dotnetcurry.com/ShowArticle.aspx?ID=109&AspxAutoDetectCookieSupport=1

2: http://forums.asp.net/t/1111231.aspx

I hope this help you ;-)

Or if you have the chance to use the library [Telerik] for ASP. You can call C # code easily with the controller [RadAjaxManager]

Upvotes: 0

simple-thomas
simple-thomas

Reputation: 729

Here the answer to your question How to make an AJAX call without jQuery?

You might think however, in using JQuery which will simplify the way to write javascript code.

Upvotes: 1

Related Questions