C# .NET 및 Javascript 확인
-
18-09-2019 - |
문제
XML 파일 업로드 양식이 포함된 C# ASP.NET 웹 페이지가 있습니다.사용자가 '업로드'를 클릭하면 사용자에게 "이 파일이 맞습니까?"라고 묻는 자바스크립트 확인 경고가 나타납니다.확인 경고는 파일 이름에 다른 양식 필드 중 하나의 값이 포함되어 있지 않은 경우에만 활성화됩니다.
업로드되는 파일 이름이 특정 기준을 충족하지 않는 경우 활성화되는 JavaScript 확인 경고와 C# ASP.NET 양식의 사용을 결합하는 가장 좋은 방법은 무엇입니까?
해결책
숨겨진 필드에 유효한 문자열 값을 입력한다고 가정합니다(언급하지 않았습니다).구현하다 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']")
.자세한 내용은 다음을 참조하세요. 데이브 워즈의 게시물.
다른 팁
이 페이지에서는 C#으로 수행해야 할 작업이 많지 않습니다. 대부분의 작업은 클라이언트 측에서 수행될 것 같습니다.
.aspx 양식에 파일 업로드 컨트롤과 버튼을 추가합니다.버튼의 OnClientClick 속성을 다음과 같이 설정합니다.
OnClientClick = "return myFunction()"
그런 다음 다음과 같은 자바스크립트 함수를 작성합니다.
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 검사를 우회하지 않았다는 것을 신뢰할 수 없습니다.