如何在没有页面重载的情况下调用页面方法?

时间:2011-08-21 09:54:16

标签: c# javascript jquery asp.net ajax

似乎是FAQ。但是我心里想着一些东西让我解释一下。 我通过多种方式搜索测试,最后我找到了这些灵魂:

  1. Jquery With Ajax
  2. Webform_Docallback
  3. 脚本管理器和UpdatePanel
  4. 所以我需要的是Something Like first solution,但也希望访问 this 对象,甚至 page controls 。和理由不使用第二和第三种解决方案,他们称之为Page-Reload first and then call that method。这就是我所需要的!

    有什么解决方案吗?有小费吗?

    Additional Info :
    我需要类似的东西:通过button_click调用Method并转到服务器端。在服务器端调用Wcf-Service,最后做一些事情。 (比如绑定网格数据源,更改文本框值等)。

    几乎 jQuery with Ajax 就是我的需要。但我这样有问题!

    1. 无权访问此对象
    2. 无权访问Page-Controls
    3.   

      那么如何解决这些问题?

3 个答案:

答案 0 :(得分:3)

第一个

在.cs文件中创建WebMethod

[WebMethod]
public static string Foo() 
{ 
  //......
}

如果你想使用会话,你应该

[WebMethod(EnableSession = true)] or [WebMethod(true)]
public static string Foo() 
{
    //......
}

然后,通过js

调用webmothod
$.ajax({
type: "POST",
contentType: "application/json",
url: "WebForm1.aspx/Foo",
data: "{}",
dataType: "json",
success: function(){.......}
});

希望它有用......

答案 1 :(得分:3)

        [WebMethod()]
        [System.Web.Script.Services.ScriptMethod()] 
        public static void YourTaskNAme(Your Parameter)
        {
             // Yuor Code here
        }

更新脚本管理器以使其具有以下属性EnablePageMethods="true"

最后使用javascript调用此方法

PageMethods.YourTaskNAme(Your Parameter, OnMethodFinished);

function OnMethodFinished() {
alert('Call to function worked.')
        }

答案 2 :(得分:2)

您可以通过Page_LoadScriptManager.IsInAsyncPostBack检查ScriptManager媒体资源,绕过UpdatePanel方法中的任何逻辑。