我的网站中的所有页面都有一个函数,它位于我的母版页中,我希望它可以从一些jQuery Ajax方法运行。
我现在有一些这样的代码
的jQuery
$(document).ready(function() {
$("#test").click(function() {
$.ajax({
type: "POST",
url: "Default.aspx/GetDate",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#test").text(msg.d);
}
});
});
});
主页中的HTML
<div id="test">Click here for the time.</div>
我的Master VB背后的Asp.Net代码
<WebMethod> _
Public Shared Function GetDate() As String
Return DateTime.Now.ToString()
End Function
目前,除非我将网络方法移至Default.aspx
VB页面
有没有办法可以改变这部分
url: "Default.aspx/GetDate",
使用母版页功能?
我尝试将其更改为
url: "template.master/GetDate",
但这只是给我一个404错误
有什么想法吗?
提前致谢
答案 0 :(得分:9)
您的网络代码不能驻留在母版的代码隐藏中。
我发现在我的项目中包含实际的Web服务或WCF服务更容易,我需要从多个页面调用它。
编辑:
向项目添加WCF服务:
Stackoverflow上有几个例子......
希望有所帮助。
答案 1 :(得分:3)
如何将webmethod放在基类中?
public class WebMethodBase : Page
{
<WebMethod> _
Public Shared Function GetDate() As String
Return DateTime.Now.ToString()
End Function
}
然后从那些要公开webmethod的页面继承这个类。
请原谅我的混合C#和VB,我不熟悉VB语法。
答案 2 :(得分:1)
你可以像上面提到的Andreas那样去基类方法路线。
确保:
(在Ajax调用中:)
url: window.location.pathname.substr(1) + "/GetDate"