C#の.NETとJavascriptの確認
-
18-09-2019 - |
質問
私は、xmlファイルのアップロードフォームとC#ASP.NET Webページを持っています。ユーザーが「アップロード」をクリックすると、javascriptの確認アラートがユーザに尋ねるポップアップ表示されます、「このファイルは正しいですか」。ファイル名は、他のフォームフィールドのいずれかから値が含まれていないかどうかを確認する警告がのみアクティブになります。
C#ASP.NETフォームの使用と、アップロードされたファイルの名前は、一定の基準を満たしていない場合は起動しているjavascriptの確認アラートを組み合わせるための最良の方法は何ですか?
解決
私はあなたが(あなたが言及していない)隠しフィールドに有効な文字列の値を入れているとします。アップロードボタンの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>
EDIT: - について<%= file1.ClientID %>
。
このはctl00$ctl00$cphContentPanel$file1
のようなファイルアップロードコントロールのクライアント側のIDによって置き換えられます。それは$("input[id$='file1']")
のようなものを使用に対するステロイドでスクリプトを置きます。詳細については、<のhref = "http://encosia.com/2009/06/09/11-keystrokes-that-made-my-jquery-selector-run-10x-faster/" のrel = "nofollowをnoreferrerを参照してください。 「>デイブ区ポストでます。
他のヒント
これのほとんどは、クライアント側で行われますように聞こえる、あなたがこのページ用の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を返します。彼らは「いいえ」をクリックする場合、これはポストバックがキャンセルされます。
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;
}
}
私は、理由のイベントがこれらのブラウザでは動作方法のIEとFirefoxの両方で動作するようにこの種のものを実装する問題を抱えていました。私はそれがそれらのいずれかで動作するようになったときに、他のはまだ私が相殺してもポストバックが発生します。
ここでは、我々は我々のコードで(ブラウザテストは、他の場所から盗まれた)持っているものです。
if (!window.confirm("Are you sure?"))
{
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
window.event.returnValue = false;
else
e.preventDefault();
}
クライアント側の検証を使用することに加えて、あなたはまた、サーバー側の検証を提供するためのCustomValidatorを追加する必要があります。あなたは、ユーザーがJavascriptがオンになったこと、またはユーザーがあなたのJavascriptのチェックをバイパスしていないことを信頼することはできません。