在asp.net 3.5网站中,我有一个位于ASPX页面的jquery,它应该在代码隐藏中执行一个函数。我使用了webmethod方法。
以下是错误: System.ArgumentException:未知的Web方法CloneItem。 参数名称:methodName
以下是相关代码:
ASPX页面与Jquery的相关部分:
<%@ Page Language="VB" MasterPageFile="~/Pages/MasterPage.master" Title="Planning" %>
<%@ Register TagPrefix="PWC" Namespace="PWC" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<PWC:Planning runat="server" SkinFileName="Core/Planning.ascx" ID="Planning" Secured="true"/>
$("#dialog-form").dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Create clone": function () {
var cloneItem = $('input[name=item]').is(":checked");
var intID = $(this).data('intID');
var bValid = true;
bValid = bValid && checkSelections();
if (bValid) {
$.ajax(
{
type: 'POST',
url: 'Planning.aspx/CloneItem',
data: "{'(intID': '" + $(this).data('intID') + "', 'item': '" + cloneItem + "'}" ,
dataType: 'json',
contentType: 'application/json; charset=utf-8'
// success: cloneOnSuccess,
// error: cloneOnError
});
$(this).dialog("close");
Planning.aspx vb代码隐藏中的函数:
Imports System.Web
Imports System.Web.Services
<WebMethod(EnableSession:=True)> _
Public Shared Function CloneItem(intID As String, item As Boolean) As String
'execute a stored procedure here
Return "success!"
End Function
母版页包含以下scriptmanager:
<AJAXToolkit:ToolkitScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeOut="600" EnablePartialRendering="true" CombineScripts="false" ScriptMode="Release" EnablePageMethods="true" >
</AJAXToolkit:ToolkitScriptManager>
对我做错了什么的任何想法?
答案 0 :(得分:0)
有两件事可能是问题所在。首先,你需要在web.config中使用一些代码。
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>
参见参考:Call ASP.NET PageMethod/WebMethod with jQuery - returns whole page
另一件事是您需要在发布此数据时在参数中使用JSON.stringify。
参见参考资料 - http://www.asp.net/ajaxlibrary/jquery_webforms_retrieve_data_from_pagemethod.ashx