3

MVC3 で。ボタンクラス「open-deleteRowDialog」があり、クリックすると次のJavaScriptに移動します。

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

})

私が欲しいのは、モデル(ビュー)に表示するために「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;


        }

ありがとう!

4

2 に答える 2

6

コントローラー アクション メソッドへの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
 });

もう 1 つの方法は、 ajaxSetupメソッドで cache プロパティの値を false に設定することです。ただし、これはすべての ajax 呼び出しに適用されます。

于 2013-03-14T15:15:56.837 に答える
2

jQuery ajaxを使用し、コントローラーメソッドをURLとして直接呼び出します

$(document).on("click", ".open-DeleteRowDialog", function () { 
    var pwd="";
    $.get('Yourcontroller/GeneratePsw', function(data){
        pwd=data;
        //now do whatever you want with pwd variable;
    });    
})
于 2013-03-14T15:18:01.940 に答える