C# 如何从ASP.NET中的Jquery调用UserControls CodeBehind方法?
Iam具有用于显示成功/警告/错误消息的UserControl。对于所有这些类型的消息,我们有一个UserControl“Message.ascx”,当前用于其他没有Jquery的aspx页面 因为我们正在尝试维护标准消息警报。 现在,由于iam第一次在我的aspx页面中使用Jquery和JSON调用,我想从我的Jquery中显示这些成功消息 通常,aspx代码隐藏我使用用户控件作为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
//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)=成功还是失败?