문제

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 검사를 우회하지 않았다는 것을 신뢰할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top