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

时间:2013-04-15 08:47:40

标签: c# jquery user-controls

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

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

一般来说,aspx codebehind我已经将用户控件用作

//register User Control
<UM1:UM runat="server" ID="Message" /> 
 ....
 public void insert(){
 .. Some logic.., after success
 Message.ShowSuccess(" Inserted Successfully");
 }

但是在Jquery这里我如何调用ascx.cs中的这些ShowSuccess()  我的ajax电话

     $.ajax({
                 type: "POST",
                 contentType: "application/json; charset=utf-8",
                 url: "Voyage.aspx/Context_Update",
                 data: "{'ID':''1}",
                 dataType: "html",
                 success: function (html) {
                     try {                          
                        // Want to Show    Message.ShowSuccess(" Inserted Successfully");                     
                     } catch (ex) {
                         alert("ErrCode:1");
                     }

我没有任何想法,也没有找到任何结果.., 请帮帮我

1 个答案:

答案 0 :(得分:2)

您无法在ASP .NET中调用User-Control,因为它不是直接提供给外部世界的东西,而是在页面生命周期中服务器组合到您的页面中的东西。

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

所以,像这样:

<强> MyPage.aspx

[WebMethod]
public static string GetMessageFromWebPage()
{
    return MyUserControl.GetMessageFromUserControl();
}

<强> MyUserControl.ascx

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