从JS传递变量到VB.net

8

我有一个变量在js函数中获得了一个值。我需要将它的值作为double类型获取到vb.net变量中。

我尝试将变量放入标签中,然后从vb.net中的标签中获取它的值,如下面的代码所示:

Js部分:

document.getElementById("Label1").innerText = nwLat;

然后在 VB 部分。
   Dim nwLat As Double
    nwLat = Label1.Text
    MsgBox(nwLat)

它对我不起作用,有什么想法吗?出现的错误是“输入字符串格式不正确”。

干杯!


1
什么没有起作用?代码是否抛出异常?值是否为空?我们需要更多细节... - Justin Niessner
输入的字符串格式不正确,出现了错误。 - Sam
Label1是HTML中标签的实际ID吗? - Jamie Dixon
标签的文本值将在ViewState中维护和检索,因此这种方法不太可能奏效。请尝试使用<input type="hidden" />代替。 - Chris Shouts
3个回答

3

最简单的方法,不需要任何类型的ajax,是使用隐藏字段。

标记:

<asp:HiddenField ID="nwLatHidden" runat="server" Value="" />

JS:

document.getElementById('nwLatHidden').value = '6.00'; // 或者当然也可以从您的函数中获取值。

.NET 在您的后台程序例程中:

Dim nwLat As Double
nwLat = nwLatHidden.Value

它报错了,错误信息为“输入字符串的格式不正确”,出现在nwLat = CDbl(nwLatHidden.value)这一行代码处。 - Sam
你知道如何附加调试器吗?在尝试将 nwLatHidden 强制转换为 double 之前,它的值是多少? - Chris Shouts
请查看我上面的编辑,并检查结果是否可以解析为双精度类型。 - cillierscharl

2

在JavaScript中:

__doPostBack(
    'edit',
    JSON.stringify({ ID: id, Code: code, AcctNo: acctNo })
);

在VB.NET中:
Protected Sub Page_Load(s As Object, e As EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        '...
    Else
        Dim eventTarget As String = Request.Form!__EVENTTARGET
        Dim eventArgument As String = Request.Form!__EVENTARGUMENT
        If Not eventArgument Is Nothing AndAlso Not eventTarget Is Nothing AndAlso eventTarget = "edit" Then
            Dim jss As New JavaScriptSerializer()
            Dim ac As AccountCode = jss.Deserialize(Of AccountCode)(eventArgument)
        End If
    End If
End Sub

1
您需要使用ClientID或UniqueID:
document.getElementById("<%=Label1.UniqueID%>").innerText = "Hi";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接