【发布时间】:2010-03-26 05:56:18
【问题描述】:
是否可以从 JavaScript 调用 ASP.NET 代码隐藏函数。
【问题讨论】:
-
为什么不作为副本关闭? stackoverflow.com/questions/3709426/…
标签: javascript jquery asp.net
是否可以从 JavaScript 调用 ASP.NET 代码隐藏函数。
【问题讨论】:
标签: javascript jquery asp.net
是的,你可以制作像这样的网络方法..
<WebMethod(EnableSession:=True), ScriptMethod()> _
Public Shared Function updateContent() As String
Return "Your String"
End Function
然后在javascript中调用..
PageMethods.updateTabContent(parameterValueIfAny, onSuccessMethod,onFailMethod);
这个也需要加
<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
【讨论】:
ScriptManager 才能使其工作?请你显示那个标记好吗?
我更喜欢 Muhammad Akhtar PageMethod 方法。只是一个简短的说明:您不需要脚本管理器。脚本管理器只为您生成 javascript 代理方法。如果您的页面上已经有 JQuery,您可以忘记脚本管理器并在您的页面上编写类似的内容:
<script type ="text/javascript">
$(document).ready(function() {
$("#AjaxLink").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "YourPage.aspx/updateContent",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
$("#content").html(result.d);
}
});
});
});
</script>
这假设您的页面上有一个 ID 为 AjaxLink 的链接,以及一个显示结果的 id 内容的 div。 好处是与 jquery 和 scriptmanager 注入的脚本相比,您节省了 30kb javascript
【讨论】:
[System.Web.Services.WebMethod]
public static string set_single_amount(arg a1)
{
return value;
}
$("#control").click(function()
{
PageMethods.set_single_amount(value,afercalling)
});
function afercalling(result)
{
alert(result);
}
【讨论】:
不,不能直接从 Javascript 调用函数背后的 ASP.NET 代码。背后的 ASP.NET 代码在 ASP.NET 工作进程的上下文中在服务器上执行。 Javascript 在客户端浏览器的上下文中在客户端上执行。
Javascript 触发执行 ASP.NET 代码的唯一方法是通过从 Javascript 到服务器的 AJAX 调用。
【讨论】:
您可以使用__doPostBack 从 javascript 进行回发。只需添加一个具有 AutoPostBack 属性的服务器控件并将其设置为 true。
【讨论】:
如果您正在处理非 Ajax 项目,您可以尝试 System.Web.UI.ICallbackEventHandler。
这里的示例:
http://msdn.microsoft.com/en-us/library/ms178210.aspx
http://www.ajaxmatters.com/2006/05/using-icallbackeventhandler-in-asp-net/
【讨论】: