1

如果我在 masterlayout 中添加服务器端功能,弹出窗口将显示在所有页面中。但是,一旦我单击“否”按钮,它就不再显示了。为此,我必须使用会话,但我们不能在 jQuery 中设置会话值。

我在 masterlayout 中使用的代码是:

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

      }
     </script>

但是该方法不会在按钮单击时触发

4

2 回答 2

3

您的方法必须具有静态属性。

[WebMethod]
public static string MethodName()
{
   return "";
}
于 2012-09-25T11:31:50.240 回答
1

从 jQuery 调用服务器端函数的方法是通过 ajax 请求。您不需要在 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
}
于 2012-04-16T14:07:21.487 回答