我使用System.Web.Services.WebMethodAttribute创建一个可从客户端脚本调用的ASP.NET页面的公共静态方法:
test.aspx.cs
[System.Web.Services.WebMethod]
public static string GetResult()
{
return "result";
}
Test.aspx文件
<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true" />
<script type="text/javascript">
alert(PageMethods.GetResult());
</script>
该方法可以正常工作,但如果我使用
加载 test.aspxServer.Transfer("test.aspx");
我收到“未知网络方法”错误。之后
Response.Redirect("test.aspx");
页面效果很好。
请问您能告诉我,错误的原因是什么?如何避免错误?非常感谢!
答案 0 :(得分:1)
您在哪里收到错误 - 服务器或客户端?
如果是在客户端,请查看它正在尝试做什么。我怀疑你会发现它要求原始页面回应,而不是test.aspx。
答案 1 :(得分:1)
Server.Transfer将页面的处理(在服务器级别)传输到您指定的页面,但浏览器认为您仍在原始页面上:
所以,例如,你在start.aspx上,在后面的代码中你有Server.Transfer(“test.aspx”);
您的浏览器认为您仍然在start.aspx上,并且javascript将在start.aspx上向页面方法发送请求。
使用Response.Redirect,您的浏览器知道您现在正在使用test.aspx并且请求已正确发送。
答案 2 :(得分:0)
似乎调用set_path解决了这个问题:
<script type="text/javascript">
PageMethods.set_path("test.aspx");
alert(PageMethods.GetResult());
</script>