0

XML ファイルのアップロード フォームを含む C# ASP.NET Web ページがあります。ユーザーが「アップロード」をクリックすると、「このファイルは正しいですか?」と尋ねる JavaScript 確認アラートがポップアップ表示されます。確認アラートは、ファイル名に他のフォーム フィールドの値が含まれていない場合にのみアクティブになります。

C# ASP.NET フォームの使用と、アップロードされているファイルの名前が特定の基準を満たさない場合にアクティブになる JavaScript 確認アラートを組み合わせる最良の方法は何ですか?

4

5 に答える 5

2

このページでは、C# で行う必要があることはあまりありません。ほとんどの作業はクライアント側で行われるようです。

ファイルアップロード コントロールとボタンを .aspx フォームに追加します。ボタンの OnClientClick プロパティを次のように設定します

OnClientClick = "return myFunction()"

次に、次のような JavaScript 関数を記述します。

function myFunction()
{
   // Check other text values here

   if (needToConfirm){
      return confirm('Are you sure you want to upload?');
   }
   else return true;
}

ポストバックをキャンセルする場合 (つまり、ユーザーが確認ダイアログで [いいえ] をクリックした場合) は、「myFunction()」が false を返すことを確認してください。「いいえ」をクリックすると、ポストバックがキャンセルされます。

于 2009-09-28T17:27:21.873 に答える
0

IE と FireFox の両方で動作するようにこの種のものを実装する際に問題がありました。これは、これらのブラウザーでのイベントの動作方法が原因です。そのうちの1つで動作するようになったとき、キャンセルしたとしても、もう1つはポストバックを引き起こします。

これがコードの内容です (ブラウザー テストは別の場所から盗み出されました)。

if (!window.confirm("Are you sure?"))
{
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        window.event.returnValue = false;
    else
        e.preventDefault();
}
于 2009-09-28T17:33:44.723 に答える
0
window.onload = function() {
  document.forms[0].onsubmit = function() {
    var el = document.getElementById("FileUpload1");
    var fileName = el.value;

    if(fileName.indexOf("WHATEVER_VALUE") == -1) {
      if(!confirm("Is the file correct?")) {
        el.focus();
        return false;
      }
    }

    return true;
  }
}
于 2009-09-28T17:23:08.160 に答える
0

有効な文字列の値を隠しフィールドに入れていると思います(言及していません)。OnClientClick[アップロード] ボタンの実装:

<asp:button .... OnClientClick="return confirmFileName();"/>

<script type="text/javascript">
function confirmFileName()
{
    var f = $("#<%= file1.ClientID %>").val();
    var s=$("#<%= hidden1.ClientID %>").attr("value");
    if (f.indexOf(s) == -1) {
        if (!confirm("Is this correct file?")) {
            $("#<%=file1.ClientID %>").focus();
            return false;
        }
     }
    return true;
}
</script>

編集: - について<%= file1.ClientID %>

これは、 のようなファイル アップロード コントロールのクライアント側 ID に置き換えられますctl00$ctl00$cphContentPanel$file1。のようなものを使用することに関して、スクリプトを強化し$("input[id$='file1']")ます。詳細については、Dave Wards の投稿を参照してください。

于 2009-09-28T17:31:31.560 に答える
0

クライアント側の検証を使用するだけでなく、CustomValidator を追加してサーバー側で検証を提供する必要もあります。ユーザーが Javascript を有効にしている、またはユーザーが Javascript チェックをバイパスしていないということを信頼することはできません。

于 2009-09-28T17:40:12.620 に答える