回发后查询字符串缺失值
querystring missing value after postback
我正在使用 webcam.js 使用 asp.net 网络表单应用从网络摄像头获取照片。问题是,我想根据 "ID" 查询字符串获取文件名。但是每次我点击 "shoot" 按钮,查询字符串值什么都没有。
这是我的完整 HTML :
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Coba.aspx.vb" Inherits="myWebcam.Coba" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src='<%=ResolveUrl("~/Plugin/jquery.webcam.js")%>' type="text/javascript"></script>
<script type="text/javascript">
var pageUrl = '<%=ResolveUrl("~/Coba.aspx")%>';
$(function (){
$("#Camera").webcam({
width: 320,
height: 240,
mode: "save",
swffile: '<%=ResolveUrl("Plugin/jscam.swf")%>',
onTick: function () { },
onSave: function () {
},
onCapture: function () {
webcam.save(pageUrl);
},
debug: function () { },
onLoad: function () { }
});
});
function Capture() {
webcam.capture();
return false;
};
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>Index</h2>
<input type="button" value="Shoot!" onclick="Capture()" />
<div id="Camera"></div>
</div>
</form>
</body>
</html>
这是我的 asp.net 代码隐藏:
Imports System.IO
Imports System.Web.Services
Public Class Coba
Inherits System.Web.UI.Page
Public sID As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
sID = Request.QueryString("id")
If Not Page.IsPostBack Then
Capture(Trim(sID))
End If
End Sub
Public Sub Capture(ByVal mID As String)
Dim stream = Request.InputStream
Dim dump As String
If stream.Length > 0 Then
Using reader = New StreamReader(stream)
dump = reader.ReadToEnd()
End Using
Dim path = Server.MapPath("~/" & Trim(mID) & ".jpg")
System.IO.File.WriteAllBytes(path, String_To_Bytes2(dump))
End If
End Sub
Private Function String_To_Bytes2(strInput As String) As Byte()
Dim numBytes As Integer = (strInput.Length) / 2
Dim bytes As Byte() = New Byte(numBytes - 1) {}
For x As Integer = 0 To numBytes - 1
bytes(x) = Convert.ToByte(strInput.Substring(x * 2, 2), 16)
Next
Return bytes
End Function
End Class
我第一次 运行 页面时,我可以从查询字符串中获取 "id" 值。拍摄按钮触发回发和 运行 "Capture" 子但 "id" 查询字符串 returns 什么都没有。
这个问题有什么解决办法吗?
我试过代码,我认为有一个错误的概念。该插件似乎没有附加任何 QueryString。您的 ID 始终为 Nothing。调试了一下,发现QueryString中没有添加ID的踪迹。
文件名是您根据自己的逻辑分配给自己的属性。
Here is a complete example in which the ID is not recovered.
即使在 official page of the plugin 中也没有通过 Querystring 引用 ID。
其他的,界面和保存过程不要使用同一个页面。页面加载总是被调用,即使在加载界面时你也会调用Capture(Trim(sID))
。
我认为你必须更改这一行:
var pageUrl = '<%=ResolveUrl("~/Coba.aspx")%>';
在
var pageUrl = '<%=ResolveUrl("~/Coba_SaveImage.aspx")%>';
并且您所有的代码隐藏都在页面 Coba_SaveImage.aspx
中。在不需要页面加载的情况下,If Not Page.IsPostBack Then
始终是回发。
希望对您有所帮助。
我正在使用 webcam.js 使用 asp.net 网络表单应用从网络摄像头获取照片。问题是,我想根据 "ID" 查询字符串获取文件名。但是每次我点击 "shoot" 按钮,查询字符串值什么都没有。
这是我的完整 HTML :
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Coba.aspx.vb" Inherits="myWebcam.Coba" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src='<%=ResolveUrl("~/Plugin/jquery.webcam.js")%>' type="text/javascript"></script>
<script type="text/javascript">
var pageUrl = '<%=ResolveUrl("~/Coba.aspx")%>';
$(function (){
$("#Camera").webcam({
width: 320,
height: 240,
mode: "save",
swffile: '<%=ResolveUrl("Plugin/jscam.swf")%>',
onTick: function () { },
onSave: function () {
},
onCapture: function () {
webcam.save(pageUrl);
},
debug: function () { },
onLoad: function () { }
});
});
function Capture() {
webcam.capture();
return false;
};
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>Index</h2>
<input type="button" value="Shoot!" onclick="Capture()" />
<div id="Camera"></div>
</div>
</form>
</body>
</html>
这是我的 asp.net 代码隐藏:
Imports System.IO
Imports System.Web.Services
Public Class Coba
Inherits System.Web.UI.Page
Public sID As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
sID = Request.QueryString("id")
If Not Page.IsPostBack Then
Capture(Trim(sID))
End If
End Sub
Public Sub Capture(ByVal mID As String)
Dim stream = Request.InputStream
Dim dump As String
If stream.Length > 0 Then
Using reader = New StreamReader(stream)
dump = reader.ReadToEnd()
End Using
Dim path = Server.MapPath("~/" & Trim(mID) & ".jpg")
System.IO.File.WriteAllBytes(path, String_To_Bytes2(dump))
End If
End Sub
Private Function String_To_Bytes2(strInput As String) As Byte()
Dim numBytes As Integer = (strInput.Length) / 2
Dim bytes As Byte() = New Byte(numBytes - 1) {}
For x As Integer = 0 To numBytes - 1
bytes(x) = Convert.ToByte(strInput.Substring(x * 2, 2), 16)
Next
Return bytes
End Function
End Class
我第一次 运行 页面时,我可以从查询字符串中获取 "id" 值。拍摄按钮触发回发和 运行 "Capture" 子但 "id" 查询字符串 returns 什么都没有。
这个问题有什么解决办法吗?
我试过代码,我认为有一个错误的概念。该插件似乎没有附加任何 QueryString。您的 ID 始终为 Nothing。调试了一下,发现QueryString中没有添加ID的踪迹。
文件名是您根据自己的逻辑分配给自己的属性。 Here is a complete example in which the ID is not recovered.
即使在 official page of the plugin 中也没有通过 Querystring 引用 ID。
其他的,界面和保存过程不要使用同一个页面。页面加载总是被调用,即使在加载界面时你也会调用Capture(Trim(sID))
。
我认为你必须更改这一行:
var pageUrl = '<%=ResolveUrl("~/Coba.aspx")%>';
在
var pageUrl = '<%=ResolveUrl("~/Coba_SaveImage.aspx")%>';
并且您所有的代码隐藏都在页面 Coba_SaveImage.aspx
中。在不需要页面加载的情况下,If Not Page.IsPostBack Then
始终是回发。
希望对您有所帮助。