MVC3来自Javascript的调用控制器方法

问题描述:

在MVC3中。我有一个按钮类“开放式deleteRowDialog”当我点击它进入此javascript:MVC3来自Javascript的调用控制器方法

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

}) 

我想是调用一个方法(在控制器),谁也返回一个字符串,that's我想在“VAR PWD”保存在模型(视图),以显示

的方法(在控制器)是什么:

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; 


     } 

谢谢!

+0

你需要使用AJAX。 – SLaks 2013-03-14 15:14:28

+0

请问您可以在AJAX中编写任何示例?谢谢! – Alsan 2013-03-14 15:16:27

拨打ajax调用您的控制器操作方法。您可以使用如下所示的$.get方法。

$(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$.ajax方法与类型HTTP GET的简短形式。

如果您在响应中遇到了缓存数据等问题,您可以在您的get调用中添加唯一的时间戳,以便您不会获得缓存的结果。您可以使用$.now方法。

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

另一种方法是在ajaxSetup方法中将缓存属性值设置为false。但是这将适用于所有的ajax调用。

+0

非常感谢你!这是完美的! – Alsan 2013-03-14 15:37:36

+0

@Alsan:不客气。很高兴我能帮助:) – Shyju 2013-03-14 15:46:37

使用jQuery Ajax和直接调用控制器方法的网址

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

谢谢!它运作良好! ;) – Alsan 2013-03-14 15:40:22

+0

@Alsan很高兴听到它:) – 2013-03-14 15:40:56