0

我有一个带有 xml 文件上传表单的 C# ASP.NET 网页。当用户单击“上传”时,会弹出一个 javascript 确认警报,询问用户“此文件是否正确?”。仅当文件名不包含来自其他表单字段之一的值时,才会激活确认警报。

结合使用 C# ASP.NET 表单和 javascript 确认警报的最佳方法是什么,如果正在上传的文件的名称不符合某些条件,则激活该警报?

4

5 回答 5

2

对于这个页面,你不需要用 C# 做太多事情,听起来大部分都将在客户端完成。

将文件上传控件和一个按钮添加到您的 .aspx 表单中。将 Button 的 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
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

由于事件在这些浏览器中的工作方式,我在实现这种事情以在 IE 和 FireFox 中工作时遇到了问题。当我让它在其中一个中工作时,即使我取消,另一个仍然会导致回发。

这是我们代码中的内容(浏览器测试是从其他地方窃取的)。

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

除了使用客户端验证之外,您还应该添加一个 CustomValidator 以在服务器端提供验证。您不能相信用户打开了 Javascript,或者用户没有绕过您的 Javascript 检查。

于 2009-09-28T17:40:12.620 回答