我想在用户按下功能键时打开html页面。
现在捕获功能键工作正常,但打开相应页面的逻辑写在母版页的代码隐藏中。
我在网上看到,如果我想在代码中调用函数,那么我必须创建一个Web服务并从母版页调用webservice方法。
但由于某些原因,这不起作用。可能我没有正确地调用Web服务。
有些人可以帮忙吗?
非常感谢
<cc1:ToolkitScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" EnableHistory="true" EnableSecureHistoryState="false"
EnablePageMethods="true" CombineScripts="false">
<Scripts>
<asp:ScriptReference Path="~/ShowHelpPage.asmx" />
</Scripts>
</cc1:ToolkitScriptManager>
document.onkeydown = function(event){
if(window.event && window.event.keyCode == 113)
{
window.open("HelpFile/index.html");
}
else if(event.which == 113)
{
window.open("HelpFile/index.html");
DisplayHelpFile();
}
}
function DisplayHelpFile()
{
var i = PageMethods.DisplayHelpPage();// I think this is wrong
alert(i);
}
网络方法
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class ShowHelpPage : System.Web.Services.WebService
{
[WebMethod]
public string DisplayHelpPage()
{
return "Window.Html";
}
}
答案 0 :(得分:1)
“我在互联网上看到,如果我想在代码后面调用函数 然后我必须创建一个Web服务并调用webservice方法 来自母版页“
我假设你在上下文中引用方法而不是函数。您是否想在掌握页面加载时调用方法?我认为你不需要为此创建一个Web服务?除非您希望客户端通过Async启动请求,并且您使用JavaScript和AJAX来发出请求。你想要实现什么目标?在我看来,这可以通过javascript实现。如果您通过JavaScript调用页面,它应该加载自己?
低于实现你想要的但只使用javascript。
function keyHandler(e)
{
... key handling script
if(myKey == 'F1')
{
window.location.href = '...';
}
}
document.onkeypress = keyHandler;
如果您需要调用此Web服务并且需要从客户端启动它,您可以使用JQuery来执行此操作。使用与ShowHelpPage.asmx相同的方法存储处理,并通过JavaScript处理渲染。据我所知,这也消除了对ToolkitScriptManager的依赖。
function DisplayHelpFile()
{
$.ajax({
type: "POST",
url: "ShowHelpPage.asmx/DisplayHelpPage",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success:function(result)
{
alert(result);
}
},
error: ErrorMessage
});
function ErrorMessage(result)
{
alert(result.status + ' ' + result.statusText + ' ' + result.responseText);
}
}
答案 1 :(得分:0)
您的网络方法必须是静态的。