私のソリューションでは、ポストバックの直前にチェックが行われます。私もjqueryを少し使っています。
パズルの重要な部分は、以前のファイル名を取得することです。この部分を行うPageMethodを作成しました。あなたは、ファイル名を取得する方法については、独自のロジックを実装する必要があります
using System.Web.Services;
.......
[WebMethod()]
public static string GetPreviousFileName()
{
//put logic here to get the filename to compare against.
return "somefilename.ext";
}
:だから私のaspx.csファイルに私はこのように見える機能を持っています。以前のファイル名を処理するための、単純ではあるが柔軟性の低いもう1つのアプローチは、asp:hiddenfieldをページに追加し、ページロード時に前のファイルの名前を入力することです。次に、$('#<%= hiddenField.ClientID %>').val()
を読んで比較することができます。
は、次は私が私のファイルアップロードコントロールのために、次のコードを使用し、ブトンを提出:
<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true" />
<div>
<asp:FileUpload ID="fu" runat="server" />
<asp:Button ID="btnUpload" runat="server" OnClientClick="return checkDuplicateFile();" Text="Upload File" />
</div>
二つの重要な事は、ここで注意することは:のScriptManagerがEnablePageMethods="true"
とASPがあります。ボタンは、指定されたOnClientClick属性を持っています。最後に、ページメソッドから値を取得し、ファイル名を比較ソリューションのjavascriptの部分:ここで起こって物事の
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
var oFilename = "";
$(function() {
//get original file name on page load
PageMethods.GetPreviousFileName(function (result) {
oFilename = result;
});
});
function checkDuplicateFile() {
var newVal = $('#<%=fu.ClientID %>').val();
var newValFile = newVal.substr(newVal.lastIndexOf("\\") + 1);
//returning true causes postback, returning false stops postback.
if (newValFile == oFilename) { return confirm("This image name already exists, do you want to replace it?"); }
else return true;
}
</script>
カップル。私たちは、ページロード時のページメソッド(PageMethods.GetPreviousFileName
)から古いファイル名を引き出すために、ページングメソッドを使用します。次に、ボタンonClickイベント(クライアント側)によって呼び出される関数を設定します。 <%=fu.ClientID %>
コードスニペットは、JavaScriptアップロード用のファイルアップロードコントロールのクライアントサイドIDを出力します。私は、ファイルパス上の部分文字列を行い、最後の '\'の後のテキストのみを取り戻して比較を行い、ファイル名を抽出します。
私のコメントでは、OnClientclickイベントで呼び出された関数からtrue/falseを返すと、ポストバックが発生するかどうかが決まります。したがって、ユーザーが確認ボックスで[はい]をクリックするとポストバックが発生し、そうでない場合は[いいえ]をクリックしても何も起こりません。
少なくとも正しい方向に向かうことを望みます。
私はファイルが存在するかどうかを知ることができますが、私はそれを選択するとどのファイルを選択するか知っていなければなりません。名前はちょうど私がFileUploadが私が使用することができるイベントを持っているとポップアップを生成する方法を知っているだけではない – SuperUser555
私はAC#のイベントでコードすることができるように方法があると思っている場合(uploadedFile.Name == existingFile.Name)その後、C#からjavascript呼び出しを行いますか?これはできますか? – SuperUser555
私は答えを掲載しましたが、それは5歳のレベルではないと思います...ごめんなさい。 – Peter