Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从ASP.NET中的Jquery调用UserControls CodeBehind方法?_C#_Jquery_User Controls - Fatal编程技术网

C# 如何从ASP.NET中的Jquery调用UserControls CodeBehind方法?

C# 如何从ASP.NET中的Jquery调用UserControls CodeBehind方法?,c#,jquery,user-controls,C#,Jquery,User Controls,Iam具有用于显示成功/警告/错误消息的UserControl。对于所有这些类型的消息,我们有一个UserControl“Message.ascx”,当前用于其他没有Jquery的aspx页面 因为我们正在尝试维护标准消息警报。 现在,由于iam第一次在我的aspx页面中使用Jquery和JSON调用,我想从我的Jquery中显示这些成功消息 通常,aspx代码隐藏我使用用户控件作为 //register User Control <UM1:UM runat="server" ID="Me

Iam具有用于显示成功/警告/错误消息的UserControl。对于所有这些类型的消息,我们有一个UserControl“Message.ascx”,当前用于其他没有Jquery的aspx页面

因为我们正在尝试维护标准消息警报。 现在,由于iam第一次在我的aspx页面中使用Jquery和JSON调用,我想从我的Jquery中显示这些成功消息

通常,aspx代码隐藏我使用用户控件作为

//register User Control
<UM1:UM runat="server" ID="Message" /> 
 ....
 public void insert(){
 .. Some logic.., after success
 Message.ShowSuccess(" Inserted Successfully");
 }
我没有任何想法,也没有发现任何结果。。,
请帮助我

您不能在ASP.NET中调用用户控件,因为它不是直接提供给外部世界的东西,而是服务器在页面生命周期中组合到页面中的东西

如果要在服务器上调用某些内容,则需要将
[WebMethod]
属性添加到服务器端方法,这允许您从jQuery调用。您可以在页面上有一个
[WebMethod]
,然后调用用户控件中的一些代码,但不能直接访问用户控件

比如说:

MyPage.aspx

[WebMethod]
public static string GetMessageFromWebPage()
{
    return MyUserControl.GetMessageFromUserControl();
}
public static string GetMessageFromUserControl()
{
    return "Hello World!"
}
MyUserControl.ascx

[WebMethod]
public static string GetMessageFromWebPage()
{
    return MyUserControl.GetMessageFromUserControl();
}
public static string GetMessageFromUserControl()
{
    return "Hello World!"
}
jQuery

$.ajax({
  type: "POST",
  url: "MyPage.aspx/GetMessageFromWebPage",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Do something with the page method's return.
    $("#Result").text(msg.d);
  }
});

为什么要使用servercode在客户端上显示消息?对于所有其他页面,我们都使用相同的方法,但所有其他页面都不在Jquery中。我们只想维护标准消息。是否无法从ascx获取servercode?Jquery是在浏览器中运行的客户端代码(javascript)。UserControl是在服务器上运行的服务器控件。如果您已经知道客户端上的消息,那么为什么需要执行servercode呢?这将导致不必要的流量。因此,对于此消息,我需要一个WebMethod调用ascx servercode并使用此WebMethod?是的,页面上的WebMethod和用户控件上的普通方法。页面调用用户控件上的方法并返回给调用者。@Pink-我已经扩展到包含了相当完整的示例。非常感谢…,但这里有一个疑问…,我想调用这些GetMessageFromUserControl来获得一次插入的成功,所以在成功插入时,我需要再次调用此ajax调用??我不确定你的意思是什么?一旦你打电话插入记录或你正在做的任何事情,你就可以显示一个警报(“成功”)或类似的警报。除非您需要再次调用服务器,否则我不会这样做,因为您希望将到服务器的往返次数保持在最低限度。如果您多次调用它,为什么不将您的请求捆绑到一个请求中并得到一个结果呢?即插入记录(1,2,3,4)=成功还是失败?