页面方法和更新面板

发布于 2024-11-25 23:38:47 字数 1095 浏览 0 评论 0 原文

我的页面层次结构如下

在此处输入图像描述

如果单击“保存”按钮,我想执行 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;
}

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

在此处输入图像描述

I have a page hierarchy as the following

enter image description here

I want to execute a PageMethod if I click the 'SAVE' button, so I coded like the following

On Button Click I called

OnClientClick="return btnSaveAS_Clicked()"

Called the following on PageLoad of the inner user control

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());
}

Coded page method as

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

But it gives the following error...

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

jJeQQOZ5 2024-12-02 23:38:47

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

在用户中control:

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

在 aspx.cs page:

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

和 in aspx page:

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

或者,您可以使用 ASMX 服务和 jquery ajax 方法 (jQuery.ajax, jQuery.get >, jQuery.post) 异步调用您的方法 (示例)。

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

You cannot define page methods in ascx pages. You have to define them in your web form. If you want to have a page method, defined in your user control, you'd have to define a forwarding page method in you aspx page like below (source):

in user control:

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

in aspx.cs page:

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

and in aspx page:

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

Alternatively, you could use ASMX services and jquery ajax methods (jQuery.ajax, jQuery.get, jQuery.post) to call your methods asynchronously (sample).

Another option would be defining http handlers and call them via jQuery as well (tutorial).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文