如何在不刷新页面的情况下调用页面方法?

3
这可能看起来像是常见问题,但我有一些想法,让我解释一下。我搜索并尝试了很多方法,最终找到了以下解决方案:
  1. 使用 jQuery 和 Ajax
  2. Webform_Docallback
  3. Script Manager 和 UpdatePanel
因此,我需要的是类似第一个解决方案,但也想访问this对象甚至是页面控件。不使用第二个和第三个解决方案的原因是它们首先调用Page-Reload,然后才调用该方法。这就是我需要的!
有什么解决方案吗?有什么提示吗?
附加信息: 我需要的是:通过button_click调用方法并转到服务器端,在服务器端调用 Wcf-Service 并最终执行某些操作(如绑定网格数据源、更改文本框值等)。
几乎就是需要使用jQuery 和 Ajax。但是我在这种方式下遇到了以下问题!
  1. 无法访问此对象
  2. 无法访问页面控件
那么如何解决这些问题呢?

3个回答

3

首先,在.cs文件中创建一个WebMethod

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

如果您想使用会话,您应该:
[WebMethod(EnableSession = true)] or [WebMethod(true)]
public static string Foo() 
{
    //......
}

然后,通过js调用web方法。
$.ajax({
type: "POST",
contentType: "application/json",
url: "WebForm1.aspx/Foo",
data: "{}",
dataType: "json",
success: function(){.......}
});

希望这对您有所帮助...


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

您可以通过使用ScriptManagerUpdatePanel,检查ScriptManager.IsInAsyncPostBack属性,绕过Page_Load方法中的任何逻辑。


请参见http://aspdotnetfaq.com/Faq/how-to-determine-whether-an-asynchronous-partial-postback-has-occurred-on-page.aspx。 - Thomas Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接