简体   繁体   中英

MVC3 Calling controller method from Javascript

In MVC3. I have a button class"open-deleteRowDialog" when i click on it goes to this javascript:

 $(document).on("click", ".open-DeleteRowDialog", function () { 
         var pwd= '@Url.("GeneratePsw","Admin")';
         $(".modal-body #pwd").val(pwd);
        $('#1').modal('show');

})

what i want is to call a method (in controller), who has to return a string, that´s what i want to save in "var pwd" to show in a model (view)

the method (in controller) is:

public string GeneratePsw()
        {


            HomeBridgeEntities ddbb = new HomeBridgeEntities();
            SqlConnection Cn = new SqlConnection(((System.Data.EntityClient.EntityConnection)ddbb.Connection).StoreConnection.ConnectionString);
            SupPassGenerator sup = new SupPassGenerator(Cn);

            //psw conteins a password from CreateRandomPassword

            string psw = sup.CreateRandomPassword(9);


            return psw;


        }

thank you!

Make an ajax call to your controller action method. You may use $.get method like below.

$(function(){
   $(document).on("click", ".open-DeleteRowDialog", function () { 
      var pwd="";
       $.get("@Url.Action("Yourcontroller","GeneratePsw")",function(data){
           pwd=data;
           //now do whatever you want with pwd variable;
       });    
    })
 });

$.get is a short form of $.ajax method with type HTTP GET.

If you have trouble like cached data in the response, you may add a unique timestamp in your get call so that you won't get the cached result. You may use $.now method.

 $.get("@Url.Action("Yourcontroller","GeneratePsw")?"+$.now(),function(data){
    // to do : do something with result
 });

Another way is to set the cache property value to false in ajaxSetup method. But this will be applicable to all ajax calls.

Use jQuery ajax and call the controller method directly as a url

$(document).on("click", ".open-DeleteRowDialog", function () { 
    var pwd="";
    $.get('Yourcontroller/GeneratePsw', function(data){
        pwd=data;
        //now do whatever you want with pwd variable;
    });    
})

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM