全部。
(對發布到網路服務器的頁面使用 CodeFile
洗掉命名空間,因為添加 CodeFile 后出現錯誤)
我為每個人制作了一個視頻,讓他們可以現場觀看該問題。這是創建一個新的 Web 專案,然后演示該問題。

因此,為了 100% 清楚,我們不會將其作為專案打開。因此,我們總是會使用 VS 的打開網站選項打開這個專案。
所以,要開放 開發,我們使用開放的網站,而不是開放的應用程式。
例如這個:

然后這個打開:

當然,弄亂代碼檔案和頁面設定(標記中的第一個標題)總是很危險的。
所以,我們添加了一個新頁面——MyTest(我們當然讓 VS 為我們創建這個頁面,對嗎????)。
因此,我們現在剪切 粘貼您的標記:
我們現在有了這個:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MyTest.aspx.vb" Inherits="MyTest" %>
<!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 language="javascript" type="text/javascript">
$(function () {
$("[id*=fuUpload]").change(function () {
if (typeof (FileReader) !="undefined") {
var dvPreview = $("#dvPreview");
dvPreview.html("");
var regex = /^([a-zA-Z0-9\s_\\.\-:]) (.jpg|.jpeg|.gif|.png|.bmp)$/;
$($(this)[0].files).each(function () {
var file = $(this);
if (regex.test(file[0].name.toLowerCase())) {
var reader =new FileReader();
reader.onload = function (e) {
var img = $("<img />");
img.attr("style","height:100px;width: 100px");
img.attr("src", e.target.result);
dvPreview.append(img);
}
reader.readAsDataURL(file[0]);
}else {
alert(file[0].name " is not a valid image file.");
dvPreview.html("");
return false;
}
});
}else {
alert("This browser does not support HTML5 FileReader.");
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="fuUpload" runat="server" multiple="multiple" />
<asp:Button ID="btnUpload" Text="Upload" runat="server" OnClick="Upload" />
<hr />
<div id="dvPreview">
</div>
</div>
</form>
</body>
</html>
所以,我沒有弄亂頁面指令,我把你的部分粘貼進去了。
對于后面的代碼,我們有這個:
Partial Class MyTest
Inherits System.Web.UI.Page
Protected Sub Upload(sender As Object, e As EventArgs)
For i As Integer = 0 To Request.Files.Count - 1
Dim postedFile As HttpPostedFile = Request.Files(i)
Dim ext As String = System.IO.Path.GetExtension(postedFile.FileName)
Dim now As DateTime = DateTime.Now
Dim getYear As String = (((((now.ToString("hh") & "") now.ToString("mm") & "") now.ToString("ss") & "") now.ToString("mm") & "") now.ToString("dd") & "") now.ToString("yyyy") now.ToString("fff") ""
Dim testName As String = getYear ext
If postedFile.ContentLength > 0 Then
Dim fileName As String = IO.Path.GetFileName(postedFile.FileName)
'postedFile.SaveAs(Server.MapPath("~/Uploads/") & fileName) ' Single file either way
postedFile.SaveAs(Server.MapPath("~/Uploads/") & testName) ' Duplicate file CodeFile and no Namespace
End If
Next
End Sub
End Class
我在專案 Uploads 中添加了一個檔案夾。
我只得到一個檔案。保存為 zip 檔案的網站在這里:
現在,如果您想搞砸,并嘗試更改 CodeFile 設定,那么請做我的客人 - 但我不會冒險這樣做,因為網站假定 IIS 將編譯該代碼。
好的,現在讓我們用一個 asp.net 網站專案來做這件事。這個:

再說一次,現在我們不使用開放式網站,但當您想在此應用程式上作業時將使用開放式專案。
因此,鏈接到第一個示例 - 壓縮網站(不是應用程式),作為網站打開。

因此,這將在后面的代碼中創建一個新的事件存根。并且非常注意,但非常仔細地說明了這一點:
因此將代碼移動到新的事件名稱)存根
換句話說,我們洗掉了另一個存根。
所以,原因(當然!!!)是靜態檔案名有效,是代碼運行了兩次,但由于名稱相同,你得到一個檔案 - 同一個檔案。
如果您使用毫秒,并且有兩個事件連接到一個按鈕,那么代碼存根會觸發兩次。(結果你得到兩個檔案)
我問了多少次:
參考:
當你說你得到兩個檔案時,你的 sub 被呼叫了兩次嗎?還是 for/next 回圈運行兩次?它是哪一個?
和這個:
參考:
但后來你沒有回答這個問題。代碼是否運行兩次?該代碼無法創建兩個檔案,除非它運行兩次或被呼叫兩次。如果你設定一個斷點,并在代碼運行時對其進行除錯,會發生什么?單步該代碼,并確定例程是否被呼叫兩次,或者回圈運行兩次
這個:參考:
你沒有嘗試我的斷點建議——你需要這樣做。
所以,當我在上面多次詢問時——我假設你已經從我們的檢查清單中測驗、檢查并洗掉了它。在故障排除期間跳過測驗/檢查嘗試的建議是一件非常糟糕的事情。一旦我添加了那個問題 建議,我就會把它從串列中洗掉。我必須假設您仔細檢查并雙重測驗了該解決方案。
所以,你沒有跟進我的嘗試——忽略了它們。
所以,問題過去很簡單。按鈕單擊附加了兩個事件,代碼存根運行兩次。并使用毫秒檔案名,然后您將獲得兩個檔案。使用單個檔案名,它也運行了兩次,但您保存了兩次檔案。
所以,我提出的這個問題被忽略了。
因此,要么使用螢屏截圖 ctrl-space 在標記中創建事件存根,要么雙擊按鈕并讓后面的代碼有一個處理程式。(但是,你們兩個同時活躍)。(當然,然后洗掉標記中的 onclick - 你不能同時激活)。
因此,洗掉標記中的 onclick(并洗掉存根中的代碼)。現在嘗試雙擊來創建事件。
您可以按照上述任何一種方式添加事件,但您不能在標記中添加句柄事件(在代碼中)和 onclick。
所以,做一個,或另一個 - 但不是兩者兼而有之。因此,您可以在標記中添加或添加 onclick(使用 ctrl-space)——創建新事件,并使用“handles”指令洗掉(或任何)舊事件。
祝你好運!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490857.html
