2014-03-07 58 views
0

我试图分配hiddenfield值获取隐藏字段值在我的Page_Load如图所示:从代码隐藏

If Session("tempDir") Is Nothing Then 
    If Request.Files.Count > 0 Then 
     Dim tempDir As String 
     tempDir = Path.GetRandomFileName() 
     tempDir = tempDir.Substring(0, tempDir.LastIndexOf(".")) 
     IO.Directory.CreateDirectory(Server.MapPath("~/Uploads/" & tempDir)) 
     IO.Directory.CreateDirectory(Server.MapPath("~/Downloads/" & tempDir)) 
     Session.Add("tempDir", tempDir) 


     currentDirectory.Value = Session("tempDir").ToString 

     Dim chunk As Integer = If(Context.Request("chunk") IsNot Nothing, Integer.Parse(Context.Request("chunk")), 0) 
     Dim fileName As String = If(Context.Request("name") IsNot Nothing, Context.Request("name"), String.Empty) 
     myfilename = fileName 
     Session.Add("filename", myfilename) 
     finalfilename.Value = currentDirectory.Value & fileName 

     finalfilename.Value = Session("filename").ToString 
     MsgBox(finalfilename.Value) 

     workingDir.Value = Server.MapPath("~/Uploads/" & tempDir) 
     Session.Add("tempDir", workingDir.Value) 
     MsgBox(workingDir.Value) 


     waitFlag.Value = "True" 
     Session.Add("flag", waitFlag.Value) 

     waitFlag.Value = Session("flag").ToString 
     MsgBox(waitFlag.Value) 

     Dim fileUpload As HttpPostedFile = Context.Request.Files(0) 

     Dim uploadPath = Context.Server.MapPath("~/uploads/" & tempDir) 
     Using fs = New FileStream(Path.Combine(uploadPath, fileName), If(chunk = 0, FileMode.Create, FileMode.Append)) 
      Dim buffer = New Byte(fileUpload.InputStream.Length - 1) {} 
      fileUpload.InputStream.Read(buffer, 0, buffer.Length) 

      fs.Write(buffer, 0, buffer.Length) 
     End Using 
    End If 
End If 

这是我的HTML输入隐藏字段:

<input type="hidden" id="workingDir" runat="server"/> 
<input type="hidden" id="finalfilename" runat="server"/> 
<input type="hidden" id="waitFlag" runat="server"/> 
<input id="currentDirectory" type="hidden" runat="server"/> 

这是我的Ajax调用哪里我得到所有隐藏的字段值为undefined:

<script type="text/javascript"> 
    $('#btnconvert').click(function() { 
     var wd = $('#workingDir').val(); 
     alert(wd); 
     var fn = $('#finalfilename').val(); 
     alert(fn); 
     var bf = $('#waitFlag').val(); 
     alert(bf); 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/ProcessFiles", 
      data: "{'workingDir':'" + wd + "', 'finalfilename':'" + fn + "', 'waitFlag':'" + bf + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       alert("success"); 
      }, 
      error: function (data) { 
       alert("fail"); 
      } 
     }); 
    }); 
    </script> 

任何人都可以指出我在哪里出错了吗?

+0

你检查它的进入,因为你如果部分已经检查会话是否可用,只有它会将值分配给隐藏变量。你是否也使用autopostback检查? –

+0

是的,因为它正在生成会话变量并将文件存储在其中,所以显然它应该有文件名权限? – coder

+0

是的,你是否通过调试来检查这些值是否放在服务器端代码的隐藏字段中?有没有可能没有把价值。 –

回答

1

你犯了一些小错误。

问题出在你用JQuery按钮单击事件从隐藏字段中检索值。您的隐藏字段是服务器端控制。因此,当它被渲染,隐藏字段的ID不会只工作目录,finalfilename,waitFlag

所以,你应该用客户端ID隐藏字段获取值如下所述:

var wd = $('#<%=workingDir.ClientID%>').val(); 
alert(wd); 
var fn = $('#<%=finalfilename.ClientID%>').val(); 
alert(fn); 
var bf = $('#<%=waitFlag.ClientID%>').val(); 
alert(bf); 

您jQuery将看起来如下所述,如:

<script type="text/javascript"> 
     $('#btnconvert').click(function() { 
      var wd = $('#<%=workingDir.ClientID%>').val(); 
      alert(wd); 
      var fn = $('#<%=finalfilename.ClientID%>').val(); 
      alert(fn); 
      var bf = $('#<%=waitFlag.ClientID%>').val(); 
      alert(bf); 
      $.ajax({ 
       type: "POST", 
       url: "Default.aspx/ProcessFiles", 
       data: "{'workingDir':'" + wd + "', 'finalfilename':'" + fn + "', 'waitFlag':'" + bf + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (data) { 
        alert("success"); 
       }, 
       error: function (data) { 
        alert("fail"); 
       } 
      }); 
     }); 
</script> 
+0

@ SpiderCode-感谢您的回复。现在,您的代码可以获得ajax调用成功,但仍然没有为隐藏字段获取任何值。 – coder

+0

你可以通过检查:** alert(document.getElementById('<%= workingDir.ClientID%>')value); ** – SpiderCode

+0

它是相同的,我不认为这是问题可能是在page_load保存时他们到hiddenfields和postback他们正在disppearing – coder