我已经深入了解了现有的VB.NET项目。我之前从未使用过VB.NET,所以我有点挣扎。有谁知道如何解决以下问题。
我需要将一个实例传递给客户端,然后将其传递给共享方法,以便在共享方法时访问实例方法。
起点是我的Contacts.aspx文件的HTML中的文件上载控件:
<asp:FileUpload ID="DocUpload1" runat="server" onchange="CallMe();" />
onchange事件调用javascript方法,见下文,这使用AJAX PageMethods在我的代码后面调用了一个Shared方法
这是我的Contact.aspx文件中的脚本代码
<script language="javascript">
function CallMe() {
// call server side method
PageMethods.GetContact(0, CallSuccess, CallFailed, null);
}
// set the destination textbox value with the ContactName
function CallSuccess(res, destCtrl) {
}
// alert message on some failure
function CallFailed(res, destCtrl) {
alert(res.get_message());
}
</script>
这是我想要做的事情类型的示例类,我想我需要使用“实例作为联系人”作为WebMethod函数的输入参数,但我不知道如何将实例传递给它:
这是我的Contacts.aspx.vb文件中的类。
Partial Class Contacts
<System.Web.Services.WebMethod()> _
Public Shared Function GetContact(ByVal instance As Contacts) As String
Return instance.GetContactName() 'This is an instance class which I need to call.
End Function
'This is my instance class which I want to call from the Shared Class.
Public Shared Function GetContactName() As String
Return "Fred Bloggs"
End Function
End Class
如果有人知道解决方案,请他们更新代码,因为如果你只是给出描述,我可能无法理解。我只是希望自己走在正确的轨道上。
答案 0 :(得分:2)
如果我理解正确,您希望从instance
访问在ASP.Net页面生命周期中创建的类(您的PageMethod
) - 例如在初始页面加载或文件上载期间创建的等
这不是直接可行的,因为PageMethods没有经历整个页面生命周期(它们本质上是web服务)。因此,您需要将某种标识符传递给客户端,当传递回PageMethod
中的服务器时,可以用来重新创建或检索instance
。
例如,在初始页面加载期间:
session("ContactID") = instance
您的PageMethod可能类似于:
Public Shared Function GetContact(ByVal key As String) As String
Return HttpContext.Current.Session(key).GetContactName()
End Function
其中参数key
与您用于在会话状态中存储实例的密钥相同。
在你的javascript中:
function CallMe() {
// call server side method
PageMethods.GetContact('ContactID', CallSuccess, CallFailed, null);
}