gpt4 book ai didi

c# - 使用 jQuery AJAX 在控件代码隐藏而不是页面代码隐藏中调用 ASP.NET 函数

转载 作者:太空狗 更新时间:2023-10-30 00:12:38 26 4
gpt4 key购买 nike

我有一个正在创建的用户控件,它在 jQuery 中使用了一些 AJAX。

我需要在我的控件的代码隐藏中调用一个函数,但我在网上找到的每个示例都是这样的:

$("input").click(function() {
$.ajax({
type: "POST",
url: "Default.aspx/GetResult",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
//do something
}
});
});

如果我在 Default.aspx 页面中有该方法,则该方法工作正常。但是我不想在那里有这个功能,我需要我控制的代码隐藏中的功能。如何修改 url 属性以调用正确的函数?

我试过:

url: "GetResult"

但这没有用。

最佳答案

处理这个问题的方法是在您的页面中使用 web 方法,然后将值直接传递给控件中具有相同签名的控件方法 - 没有其他方法可以做到这一点。

换句话说,所有页面方法所做的就是调用用户控件方法,所以它真的很小。如果您对多个子控件具有相同的签名,您可以传递一个参数来告诉页面方法调用/使用哪一个。

编辑:根据请求(非常非常简单的示例)。您可以找到其他示例,这些示例将更复杂的类型传递给服务器端方法。例如在这里看到我的答案:Jquery .ajax async postback on C# UserControl

例子:页面方法:注意“静态”部分。

[WebMethod]
public static string GetServerTimeString()
{
return MyNamespace.UserControls.Menu.ucHelloWorld();
}

用户控制方法:

public static string ucHelloWorld()
{
return "howdy from myUserControl.cs at: " + DateTime.Now.ToString();
}

通过 jquery 客户端 ajax:

$(document).ready(function()
{
/***************************************/
function testLoadTime(jdata)
{
$("#timeResult").text(jdata);

};
$("#testTimeServerButton").click(function()
{
//alert("beep");
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataFilter: function(data)
{
var msg;
if (typeof (JSON) !== 'undefined' &&
typeof (JSON.parse) === 'function')
msg = JSON.parse(data);
else
msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
url: "MyPage.aspx/GetServerTimeString",
success: function(msg)
{
testLoadTime(msg);
}
});
});
});

注意:dataFilter: function(data)... ajax 的一部分是为了在不更改客户端代码的情况下使用 2.0 和 3.5 asp.net ajax。

关于c# - 使用 jQuery AJAX 在控件代码隐藏而不是页面代码隐藏中调用 ASP.NET 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392345/

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