2012-04-16 18 views
1

masterlayoutにserverside関数を追加すると、すべてのページにポップアップが表示されます。ただし、「いいえ」ボタンをクリックすると、もう表示されません。そのためにはセッションを使用する必要がありますが、jQueryでセッション値を設定することはできません。jQueryのuidialogboxのボタンをクリックしてserverside関数を呼び出す方法は?

私はmasterlayoutでの使用の背後にあるコードは次のとおりです。

 <script runat="server"> 
     protected void btnCancel_Click(object sender, EventArgs e) 
     { 
     Session["sesvalue"] = 1; 

     } 
    </script> 

しかし、この方法は、jQueryのからサーバー側の関数を呼び出す方法は、AJAXリクエストを介しているボタンのクリック

答えて

1

に発生しません。 。 Sessionに何も入れる必要はありません。クライアント側の値をパラメータとしてサーバー側の関数に渡すだけで済みます。ここでは例です:サーバー側で

function ShowDialogAndCallServerSideFunction() 
{ 
    var $dialog = $('<div class="dialog"></div>') 
    .html('Dialog content goes here') 
    .dialog({ 
     autoOpen: false, 
     width: 320, 
     title: 'Title goes here', 
     closeOnEscape: true, 
     buttons: [ 
      { 
       text: "No", 
       click: function() { $(this).dialog("close"); } 
      }, 
      { 
       text: "Yes", 
       click: function() { 

         $.ajax({ 
          "type": "POST", 
          "dataType": 'json', 
          "contentType": "application/json; charset=utf-8", 
          "url": "WebServiceUrl.asmx/MethodName", 
          "data": "{'parameter': " + your_parameterHere + " }", 
          "success": function(result) { 
           //handle success here 
          }, 
          "error": function(xhr, ajaxOptions, thrownError) { 
           //handle any errors here 
          } 
         }); 
        $(this).dialog("close"); 
       } 
      } 
     ] 
    }); 
    $dialog.dialog('open'); 
} 

、Webサービス持つことができます - 私の例 - 上WebServiceUrl呼ば:

[WebMethod] 
public void MethodName(string parameter) 
{ 
    //the value received in 'parameter' is the value passed from the client-side via jQuery 
} 
3

をあなたの方法は、静的atributeを持っている必要があります。

[WebMethod] 
public static string MethodName() 
{ 
    return ""; 
} 
関連する問題