我正在为我的应用程序使用ASP.NET页面方法。一切都像魅力,但我不希望我的页面方法在页面中内联生成。
有没有办法将它们移动到WebResource.axd文件或类似的东西。我真的不想编写自己的代理只是为了将生成的代理移离页面。
我的基页中有多个页面方法。有没有办法告诉脚本管理器我想要为特定页面包含哪些方法,因为我没有在所有页面上使用所有方法?
答案 0 :(得分:2)
我的网页有多种方法 基页。有没有办法告诉 脚本管理器我想要哪些方法 作为我包含在特定页面中 我没有在所有页面上使用所有方法吗?
我不确定这是否可行。然而,我要做的是在实际页面本身而不是在基页中移动特定于某个页面的方法。
您可以做的是使用asmx webservices,而不是使用页面方法从JavaScript访问服务器端逻辑。
[System.Web.Script.Services.ScriptService]
public class MyWebService
{
[WebMethod]
public string GetData(int id)
{
//do some work
//return result
}
}
在您的aspx或ascx代码中,您执行以下操作
function someFunction(){
WebServiceNamespace.MyWebService.GetData(123, onSuccessCallback, onErrorCallback);
}
function onSuccessCallback(result){
//process your result. Usually it is encoded as JSON string
//Sys.Serialization.JavaScriptSerializer.deserialize(...) can be used for deserializing
}
function onErrorCallback(){
//display some info
}
您必须查看Web服务的返回对象是如何编码的。通常它被编码为Json。我现在不记得是否必须在web.config中明确指定。
//编辑:
我忘了什么您可以使用asp.net ScriptManager来注册脚本和Web服务:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/scripts/WebServiceScripts.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/Services/MyWebService.asmx" />
</Services>
</asp:ScriptManager>