佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1851|回复: 16

VB.NET拿不到Javascript return 的 value?

[复制链接]
发表于 26-1-2007 02:50 PM | 显示全部楼层 |阅读模式
我被迫使用的是 3rd Party 的 Code,
它的Javascript 会 return 一个 value,
然后我用Javascript把它Store去一个Hidden里:
<input type="hidden" id="hidBckgImg" runat="server" />

然后我尝试把这个value写出来,可是却是空白的 - hidBckgImg.value;
可是同时如果我使用Javascript prompt 它出来,它却是有value的
- alert(document.getElementById('" + hidBckgImg.ClientID + "').value);  


我该怎么样才可以使用 VB.Net 方式 - hidBckgImg.value 得到它的value呢?
谢谢。
回复

使用道具 举报


ADVERTISEMENT

发表于 26-1-2007 02:55 PM | 显示全部楼层
你的 code 怎么写?
回复

使用道具 举报

 楼主| 发表于 26-1-2007 06:36 PM | 显示全部楼层
总之呢,我会从3rd Party(Javasript来的)那边得到一个value,然后我也使用同样的Javasript把value Store去一个Hidden里,也就是 <input type="hidden" id="hidBckgImg" runat="server" /> 啦!

然后我按Submit button的时候噢,
<asp:Button ID="btnSubmit" runat="server" Text="Create"  CssClass="button" />

我有一个Validation(VB.net 写的 - uValid()),如果有错误噢,hidBckgImg.value 就会有value出来,但是如果没有错误,直接要insert去DB呢,hidBckgImg.value 却是空的。
它的分别是一个Page.IsPostBack 是 False(没有错误),另一个 Page.IsPostBack 是 True (有错误)。

Sub CreateArticle(ByVal sender As Object, ByVal e As System.EventArgs)
        '把3rd Party value Store去 Hidden。
        Master.sendJS("if (!MyBgImg == """") { document.getElementById('" + hidBckgImg.ClientID + "').value = MyBgImg; }")        
        
        If Not uValid() Then
            Return
        End If

        '我自己用javascript prompt 出来看是有value的。
        Master.sendJS("alert(document.getElementById('" + hidBckgImg.ClientID + "').value)")
        
        '我自己用 VB.Net prompt 出来看却是空的。
        Master.sendAlert("1=" + hidBckgImg.Value)        
End Sub


我都在同一页里做完这些事情。。。。
希望你看得明白我在写什么啦。。。。

[ 本帖最后由 smallsotong 于 29-1-2007 10:10 AM 编辑 ]
回复

使用道具 举报

发表于 27-1-2007 10:22 AM | 显示全部楼层
是不是.net2.0 vb .net?
是的话,我告诉你 那是一个.net 2.0 framework bug , 自己想办法解决吧
回复

使用道具 举报

 楼主| 发表于 29-1-2007 10:06 AM | 显示全部楼层
原帖由 lovefoe 于 27-1-2007 10:22 AM 发表
是不是.net2.0 vb .net?
是的话,我告诉你 那是一个.net 2.0 framework bug , 自己想办法解决吧



是 .Net2.0,难道就没有解决方法吗?
如果是 framework bug,网上应该很多人都遇过了,
应该有各种 Solution 的,可是为什么我都找不到?

请问,既然你知道这个bug,那么你的解决方法是如何呢?
谢谢。
回复

使用道具 举报

发表于 30-1-2007 01:19 AM | 显示全部楼层
可以看看你的 Page_Load 吗?
回复

使用道具 举报

Follow Us
 楼主| 发表于 30-1-2007 10:22 AM | 显示全部楼层
原帖由 goatstudio 于 30-1-2007 01:19 AM 发表
可以看看你的 Page_Load 吗?


我的 Page_Load 可以说是空白的,就算有东西也是不关事的(非常肯定),
只是我自己尝试解决到没有其他IDEAL解决的时候,
突然想要把 Page.IsPostBack 显示出来看看而已。
回复

使用道具 举报

发表于 30-1-2007 10:30 AM | 显示全部楼层
原帖由 smallsotong 于 30-1-2007 10:22 AM 发表


我的 Page_Load 可以说是空白的,就算有东西也是不关事的(非常肯定),
只是我自己尝试解决到没有其他IDEAL解决的时候,
突然想要把 Page.IsPostBack 显示出来看看而已。



如果我没猜错, 关键就在于你的 Page_Load.

我不知道你如何用 Javascript 来储存一个 value.
但是, 当你按一个 button, 整个 page 就会重新 load 过... 那时候你的 value 可能也会不见了. (要看你的 code 怎么写)

我建议你, 用 Request.Form("hidden field") 试试看.
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 30-1-2007 06:23 PM | 显示全部楼层
原帖由 goatstudio 于 30-1-2007 10:30 AM 发表

如果我没猜错, 关键就在于你的 Page_Load.

我不知道你如何用 Javascript 来储存一个 value.
但是, 当你按一个 button, 整个 page 就会重新 load 过... 那时候你的 value 可能也会不见了. (要看你的 c ...


不是的,我的例子是,当我按 Submit Button, 整个 page 重新 load 过... 那时候我的 value 才出现,
我之前说有一个 Validation Function - uValid() 吗? 如果有错误,它 Return 回去 (Page.IsPostBack 变成 True 了),然后我再按 Submit,value 反而出现了;
但是,如果没有任何错误,uValid 没有 Return 而直接要做什么的时候 (Page.IsPostBack 仍然是 False),他的 value VB.Net 却拿不到,但是如果用 Javasript Prompt hidden value 出来看却是有的,是不是很神奇哩?!
回复

使用道具 举报

发表于 30-1-2007 08:45 PM | 显示全部楼层
我还是第一次看到有人这样写code....
回复

使用道具 举报

发表于 30-1-2007 11:43 PM | 显示全部楼层
如果我没看错,如goatstudio 所说,
你用Request.Form 应该可以拿到你的value,
别用hidBckgImg.value
回复

使用道具 举报

发表于 31-1-2007 01:22 AM | 显示全部楼层
原帖由 smallsotong 于 30-1-2007 06:23 PM 发表


不是的,我的例子是,当我按 Submit Button, 整个 page 重新 load 过... 那时候我的 value 才出现,
我之前说有一个 Validation Function - uValid() 吗? 如果有错误,它 Return 回去 (Page.IsPostBack 变 ...



不太明白你在说什么...
可以的话就把全部 code 放上来...
回复

使用道具 举报

 楼主| 发表于 31-1-2007 10:51 AM | 显示全部楼层
原帖由 lovefoe 于 30-1-2007 08:45 PM 发表
我还是第一次看到有人这样写code....


哈哈,抱歉,我是 .Net 新手。

原帖由 WuSheng 于 30-1-2007 11:43 PM 发表
如果我没看错,如goatstudio 所说,
你用 Request.Form 应该可以拿到你的value,
别用hidBckgImg.value


请问要怎样使用 Request.Form 来拿 value 呢?
我在 uValid() Function 之后,Prompt 它出来 value 也是空的,
还是我的方法不对?请指教一下。

原帖由 goatstudio 于 31-1-2007 01:22 AM 发表
不太明白你在说什么...
可以的话就把全部 code 放上来...

好,我就把 code 放上来,不过不是全部,只是部分我写的而已。
因为其他的大都被我的 Leader hide 去 DLL 了,我无能为力。。。

<%@ Page Language="VB" MasterPageFile="~/_Template/MasterPage.master"
        Title="Content Management" AutoEventWireup="false" %>
<%@ MasterType VirtualPath="~/_Template/MasterPage.master"%>

<asp: Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
    <ajax:ajaxpanel ID="Ajaxpanel1" runat="server">      
        
        <table border="0" width="100%" cellpadding="1" cellspacing="0">
        <tr><td colspan="4" class="sec">Create Article</td></tr>
        <tr><td colspan="4">
                <asp:TextBox runat="server" TextMode="MultiLine"
                    style="width:99%;height:50;"
                    id="txtContent"></asp:TextBox></td></tr>
        <tr><td colspan="4" align="center">               
                <input type="hidden" id="hidBckgImg" runat="server" />
                <input type="button" id="oRender" value="Click" style="display:none;" />
                <asp:Button ID="btnSubmit" runat="server" Text="Create"
                    On Click="CreateArticle" CssClass="button" />
                </td></tr></table>      
              
        <script type="text/javascript" language="javascript1.2">
            editor_generate('ctl00$ContentPlaceHolder1$txtContent');
            WriteMenuItems('ctl00$ContentPlaceHolder1$txtContent');
        </script>
    </ajax:ajaxpanel>
</asp: Content>

<script runat="server" type="text/VB" >   
    Protected Sub Page_Load(ByVal s As Object, ByVal e As EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            ReBindField()
        End If        
        insertJS()
    End Sub      
   
    '3rd Part Javasript
    Sub insertJS()
        Dim sJS As String
        sJS = "_editor_url = ""../CMAdmin/"";" + vbCr + _
              "_editor_field = """";" + vbCr + _
              "var win_ie_ver = parseFloat(navigator.appVersion.split(""MSIE"" )[1]);" + vbCr + _
              "if (navigator.userAgent.indexOf('Mac')        >= 0) { win_ie_ver = 0; }" + vbCr + _
              "if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; }" + vbCr + _
              "if (navigator.userAgent.indexOf('Opera')      >= 0) { win_ie_ver = 0; }" + vbCr + _
              "if (win_ie_ver >= 5.5) {" + vbCr + _
              "document.write('<scr' + 'ipt src=""../JavaScript/editor.js"" ');" + vbCr + _
              "document.write(' language=""Javascript1.2""></scr' + 'ipt>');" + vbCr + _
              "} else { document.write('<scr'+'ipt>function editor_generate() { return false; }</scr'+'ipt>'); }" + vbCr + _
              "var MyBgColor ='#FFFFFF';" + vbCr + _
              "var MyBgImg ='';" + vbCr
        Master.CmLib.addJSBlock("JsCMEditor", sJS, Me)
    End Sub  
   
   
    Sub CreateArticle(ByVal sender As Object, ByVal e As System.EventArgs)
        'Blank content is shown by vb.net & javascript without oRender is clicked.
        Master.sendJS("document.all.oRender.click();" )
        
        'Store background image name as hidden value, which return by editor.
        Master.sendJS("if (!MyBgImg == """" ) { document.getElementById('" + hidBckgImg.ClientID + "').value = MyBgImg; }" )
        
        If Not uValid() Then
            Return
        End If

        'Check value by using javascript Alert
        Master.sendJS("alert(document.getElementById('" + hidBckgImg.ClientID + "').value)" )
        
        'Check value by using .Net Alert
        Master.sendAlert("1=" + hidBckgImg.Value)
        Master.sendAlert("Request=" + Request.Form("hidBckgImg" )

        uInsert()
    End Sub
   
    'Validation of form field
    Function uValid() As Boolean
        With Master           
            If .CmLib.isEmpty(txtContent.Text) Then
                .sendAlert("Content is empty.", txtContent)
                Return False
            End If
        End With
        Return True
    End Function
   
    'Record inserting
    Sub uInsert()
        Dim aryCol() As String
        Dim aryVal() As Object        
        
        Dim sBckgImag As String = hidBckgImg.Value
        If sBckgImag <> "" Then
            sBckgImag = sBckgImag.Substring(sBckgImag.LastIndexOf("/ " + 1)
        End If
        Master.showInfo("2=" + sBckgImag)
        Exit Sub
        
        aryCol = New String() {"Body/s", "dateCreated", "ImagePath/s"}
        aryVal = New Object() {txtContent.Text, "getdate()", sBckgImag.ToString}
        Master.Abs.insert("BulletInMaster", aryCol, aryVal)
        
        ReBindField()
        Master.showInfo("Bulletin created successfully!" )
    End Sub
      
   
    'Bind data
    Sub ReBindField()
        txtContent.Text = ""
    End Sub
</script>

[ 本帖最后由 smallsotong 于 31-1-2007 10:55 AM 编辑 ]
回复

使用道具 举报

发表于 31-1-2007 02:32 PM | 显示全部楼层
如果你是从hidBckgImg.value 来拿value的,
你可以用Request.Form("hidBckgImg")

[ 本帖最后由 WuSheng 于 31-1-2007 02:38 PM 编辑 ]
回复

使用道具 举报

发表于 1-2-2007 01:40 AM | 显示全部楼层
你的 code 有点问题.

首先, 为什么 .Net 拿不到你的 hidBckgImg 的 value, 为什么 javascript 拿到. 你的 hidBckgImg 已经设定 runat=server, 那么 .Net 会等到完全执行好你的 Page_Load -> CreateArticle 才可以知道你的 hidBckgImg 里有什么. 相反, javascript 可以马上知道是因为它是直接执行的. 这是我唯一可以想到的解释.

我建议你, 既然你已经把 hidBckgImg 设成 runat=server, 基本上你不需要 javascript 来为它 assign value, 可以直接 assign. 这应该会解决你的问题. 先试试吧... 不可以的话再想过.
回复

使用道具 举报

 楼主| 发表于 5-2-2007 03:04 PM | 显示全部楼层
原帖由 WuSheng 于 31-1-2007 02:32 PM 发表
如果你是从hidBckgImg.value 来拿value的,
你可以用Request.Form("hidBckgImg" )


呵呵,这个我已经尝试过来了,拿不到的,呜呜。。。


原帖由 goatstudio 于 1-2-2007 01:40 AM 发表
你的 code 有点问题.

首先, 为什么 .Net 拿不到你的 hidBckgImg 的 value, 为什么 javascript 拿到. 你的 hidBckgImg已经设定 runat=server, 那么 .Net 会等到完全执行好你的 Page_Load -> CreateArticle才可以知道你的 hidBckgImg 里有什么. 相反, javascript 可以马上知道是因为它是直接执行的. 这是我唯一可以想到的解释.

我建议你, 既然你已经把 hidBckgImg 设成 runat=server, 基本上你不需要 javascript 来为它 assign value, 可以直接 assign. 这应该会解决你的问题. 先试试吧... 不可以的话再想过.


对咯对咯,对你的解释我也是这样子想,
可是没办法的是,我只可以从javascript得到这个Value,
就好像我一开始就说的那样:
我被迫使用的是 3rd Party 的 JavascriptCode,它会 return 我一个 value,然后我也只好使用Javascript把它Store去一个Hidden里。。。救我!请救我!
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 8-2-2007 03:51 PM | 显示全部楼层
哈哈哈。。。让我先大笑三声。。。。
问题终於都让我给解决掉了

之前因为是 3rd Party Code 所以不怎么希望去改动它,
最后还是逼于无奈之下,稍微改了一下就把事情给解决了,真是他妈的 &^%&(*$##&*($$&()(*

之前的努力就当作学习到新的东西好了(安慰自己一下)。
多谢曾经给过意见的众各位,我去也~~~~~

[ 本帖最后由 smallsotong 于 8-2-2007 05:24 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT


本周最热论坛帖子本周最热论坛帖子

ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 26-8-2025 03:44 PM , Processed in 0.132265 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表