Reputation: 325
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!
Upvotes: 3
Views: 6208
Reputation: 218932
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.
Upvotes: 6
Reputation: 33873
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;
});
})
Upvotes: 2