gpt4 book ai didi

javascript - PageMethods 和 UpdatePanel

转载 作者:数据小太阳 更新时间:2023-10-29 05:27:21 25 4
gpt4 key购买 nike

我有如下的页面层次结构

enter image description here

如果单击“保存”按钮,我想执行一个 PageMethod,因此我编写了如下代码

点击按钮我打电话

OnClientClick="return btnSaveAS_Clicked()"

在内部用户控件的 PageLoad 上调用了以下内容

private void RegisterJavaScript()
{
StringBuilder jScript = new StringBuilder();
jScript.Append("<script type='text/javascript'>");
jScript.Append(@"function btnSaveAS_Clicked() {
var txtConditionName = document.getElementById('" + txtConditionName.ClientID + @"').value;
PageMethods.Combine('hello','world', OnSuccess);
function onSuccess(result)
{
alert(result);
}
}");
jScript.Append("</script>");

Page.ClientScript.RegisterStartupScript(this.GetType(), "conditions_key", jScript.ToString());
}

编码页方法为

[WebMethod]
public static string Combine(string s1, string s2) {
return s1 + "," + s2;
}

但它给出了以下错误...

enter image description here

最佳答案

您不能在 ascx 页面中定义页面方法。您必须在 Web 表单中定义它们。如果您想在用户控件中定义一个页面方法,则必须在您的 aspx 页面中定义一个转发页面方法,如下所示 (source):

在用户控制中:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string MyUserControlPageMethod()
{
return "Hello from MyUserControlPageMethod";
}

在aspx.cs页面中:

[WebMethod]
[ScriptMethod]
public static string ForwardingToUserControlMethod()
{
return WebUserControl.MyUserControlMethod();
}

在aspx页面中:

 function CallUserControlPageMethod()
{
PageMethods.ForwardingToUserControlPageMethod(callbackFunction);
}

或者,您可以使用 ASMX 服务和 jquery ajax 方法(jQuery.ajaxjQuery.getjQuery.post)异步调用您的方法(sample)。

另一种选择是定义 http 处理程序并通过 jQuery 调用它们 (tutorial)。

关于javascript - PageMethods 和 UpdatePanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6825461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com