我有一个带有 xml 文件上传表单的 C# ASP.NET 网页。当用户单击“上传”时,将弹出一个 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>

编辑:-关于 <%= file1.ClientID %>.

这将被文件上传控件的客户端 ID 替换,例如 ctl00$ctl00$cphContentPanel$file1. 。它使脚本在使用类似的东西方面得到加强 $("input[id$='file1']"). 。欲了解更多信息,请参阅 戴夫·沃兹的帖子.

其他提示

有没有什么需要用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检查。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top