2009-09-03 40 views
1

我有vb.net方法和我把它從JS代碼我不能發送參數,這種方法在這裏是示例: JS代碼:如何從JavaScript代碼向VB.NET方法發送參數?

function OnSave() 
    { 
     var sign = document.FORM1.SigPlus1.Signature(); 
     <%Save(sign) %> 
    } 

VB方法:

Public Sub Save(ByVal obj As Object) 
    Dim obj1 As New PFSIGNATURELib.SigniShellSignature 
    obj1.SignatureBytes = obj 
    obj1.SaveBitmapToFile(CurDir() & "\sign1.bmp", 200, 200) 
    signImg.Src = CurDir() & "\sign1.bmp" 

End Sub 

回答

1

那麼你可以做在一個 「簡單」 的方法:

添加一個隱藏的LinkBut​​ton你頁面:

<asp:LinkButton runat="server" id="MyPostBackHelper" style="display: none;" /> 

然後在你的JavaScript:

function OnSave() 
{ 
    var sign = document.FORM1.SigPlus1.Signature(); 
    __doPostBack(<%= MyPostBackHelper.UniqueID %>, sign); 
} 

,然後在代碼隱藏中:

Public Sub MyPostBackHelper_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyPostBackHelper.Click 
    Dim obj1 As New PFSIGNATURELib.SigniShellSignature 
    obj1.SignatureBytes = Request.Form("__EVENTARGUMENT") 
    obj1.SaveBitmapToFile(CurDir() & "\sign1.bmp", 200, 200) 
    signImg.Src = CurDir() & "\sign1.bmp" 
End Sub 
0

有沒有簡單的方法來做到這一點。

最好的辦法是創建一個Web服務調用,並使用ASP.NET Ajax調用Web服務。

Here是一種方法。實際上

+0

不能使用只是使Save()頁面方法,然後通過AJAX從客戶端調用它? – 2009-09-03 13:23:36

+0

你如何轉換對象?網絡服務對你來說很好。我沒能成功完成,我已經通過網絡服務完成了。或者我已經完成的另一種方式是連接到一個隱藏的按鈕,但這要複雜得多。 – 2009-09-03 13:28:20

0

是否可以做類似

<%Save(%>sign<%) %>

+0

否...如果執行「保存(」會出錯,同樣適用於「)」)。你不能以這種方式混合和組合VB.NET和Javascript語句。 – 2009-09-03 13:13:18

0

難道你不使用內置到.NET 3.5的Ajax庫,並且你的方法作爲Web方法

 <WebMethod()> _ 
    Public Shared Function SaveParamsData 
End sub 

然後使用JavaScript調用該方法。

PageMethods.SaveParamsData(ReportItemPramName, MyMethod_Result); 
0

嗯,你可不會導致JavaScript發佈數據回頁面。然後檢查頁面加載是否有postdata,如果有,然後保存

相關問題