我创建了一个服务器用户控件,我希望它能够使用WebMethod。如果Web方法在我的主应用程序(作为ASMX文件),它工作正常。问题是我想将此方法包含在与用户控件相同的项目库中,以便我可以将DLL作为独立项目进行分发。因为该项目是一个类库,所以我必须使Web服务成为VB文件,而不是.ASMX。当我尝试在我的.VB文件中调用Web方法时,似乎没有任何事情发生(没有错误,但我的Web方法中的断点从未达到)是否可以实现?下面是我如何创建我的控制为例:将web方法添加到自定义服务器控件
Web方法,在myClass.VB:
_
_
_
Public Class myClass
Inherits System.Web.Services.WebService
_
Public Function TestMethod(ByVal prefixText As String) As String
return "Hello World"
end Function
和我的服务器控件设置这样的,在miniActiveDirectorySearch.VB:
Public Class miniActiveDirectorySearch
Inherits WebControl
Private Sub attachWebResources()
ScriptManager.RegisterClientScriptResource(Me, Me.GetType, "myScripts.js")
ScriptManager.RegisterClientScriptResource(Me, Me.GetType, "jquery-1.4.1.min.js")
End Sub
Protected Overrides Sub CreateChildControls()
createDynamicControls()
MyBase.CreateChildControls()
End Sub
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
attachWebResources()
MyBase.OnInit(e)
End Sub
Private Sub createDynamicControls()
Controls.Clear()
Try
tblMainLayout = buildMaintable() 'builds out the control
'to save space, I removed how this works. But, it creates a textbox that
'has a onKeyPress Event. When the user hits return, it calls the jQuery
'function serviceCall
Controls.Add(tblMainLayout)
Catch ex As Exception
Throw New ApplicationException("Exception Occurred", ex.InnerException)
End Try
End Sub
end Class
和我JQuery的方法,在myScripts.js发现:
function serviceCall(getText, tbId, divId, bgColor) {
$.ajax({
type: "POST",
url: 'myClass.asmx/TestMethod',
data: '{"prefixText":"'some test'"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert('Success')
},
error: function (e) {
alert('Error')
}
});
我已经创建的服务CL并将其包含在与我的用户控件相同的项目中,但该服务从未被调用。另一方面,如果我将服务放在我的web项目的ASMX文件中,它将会很好地到达web方法。
任何帮助将是巨大的
感谢 杰森
2013-04-23
jason