从jquery对话框调用服务器端方法

时间:2012-08-14 15:42:37

标签: javascript jquery asp.net postback

我正在将搜索功能移到jquery对话框中。

最初我有

           

            使用以下搜索框按姓氏找到            

           

              搜索方式:                                             搜索            

         

我添加了以下javascript:

        var dlgSearch = $("#SearchDialog").dialog({
        autoOpen: false,
        zIndex: 9999,
        bgiframe: true,
        resizable: false,
              width: 450,
        modal: true,
        overlay: {
            backgroundColor: '#000',
            opacity: 0.5
        },
        buttons: {
        'Search': 
         function() {
           <%= Page.ClientScript.GetPostBackEventReference(btnSearch, String.Empty) %>;
         },

            Cancel: function() {
                $(this).dialog('close');
            }
        }
    });

    dlgSearch.parent().appendTo($("form:first"));

这很好用。但是现在我将2个搜索按钮渲染到浏览器。使用标记呈现的原始对象,以及使用jquery对话框实例化呈现的按钮。我想摆脱使用服务器端标签呈现的那个,只使用jquery。

问题是,如果删除标记,我在GetPostBackEventReference调用时会收到编译错误,因为控件btnSearch不再存在。

我总是可以使用CSS为btnSearch设置样式并使其显示:none,但这似乎是解决问题的一种肮脏方式。

如果没有绑定到控件事件,是否有办法调用服务器端方法? 请注意,我不需要ajax回调方法,我需要实际上有一个回发。

1 个答案:

答案 0 :(得分:1)

在客户端上使用它:__doPostBack("SearchDialog", "");并在服务器上使用:

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack && Request.Form["__EVENTTARGET"] == "SearchDialog")
    {
         //your code here
    }
}