ASP.NET如何在'<%='中使用计数器

4
我想进行多个文件上传,使用了来自该论坛的某些脚本。 该脚本完美地工作,但当我将其与我的项目合并时, JavaScript无法获取我的元素的值。 我发现问题是因为页面上有许多ID PANEL,我需要更改为 getElementByID('<%="FileUpdate.ClientID%>').value(原始语句: getElementByID("FileUpdate").value)。
问题是: 我必须使用计数器,例如:getElementByID('<%="txtFileUpdate' + counter + '%>').value 但是它失败了。 错误显示“字符文字中的字符太多”,指向那一行。
请有人帮忙,这个问题有解决方案吗?
以下是脚本
-----> 错误“字符文字中的字符太多”
    <script type="text/javascript" language="javascript">

    var counter = 1;

    function AddFileUpload() {
        if (counter < 5) {
            counter++;
            var div = document.createElement('DIV');
            div.innerHTML = '<input id="FileUpload' + counter + '" name = "file' + counter +
         '" type="file" />' +
          '<input id="Button' + counter + '" type="button" ' +
          'value="Remove" onclick = "RemoveFileUpload(this)" />';
            document.getElementById("FileUploadContainers").appendChild(div);
        }
        else {
            alert("Cannot attach more than 5 file");
        }
    }

    function GetFile() {
        var temp;
        var error = "";
        var stringx = "";
        var exCounter = 1 ;
        for (exCounter; exCounter <= counter; exCounter++) {
     -----> stringx = document.getElementById('<%=FileUpload'+exCounter+'.ClientID%>').value;    
                if (stringx != "")
                temp += stringx + "#;";
            else 
                error += exCounter + ", ";                            
        }
        if (error != "") {
            alert("Field " + error + " Still Empty");
            return;
        }
            document.getElementById('<%=HiddenField1.ClientID%>').value = temp;            
    }

什么意思 - “我必须使用计数器”?你有一些ListView或Repeater用于FileUpload元素吗?请展示代码。 - Dmitry Khryukin
1
那行不通。原因是<%...%>之间的代码在服务器上执行,但“exCounter”是在客户端上执行的JavaScript。这对于asp.net来说只是无意义的废话。 - Erik Funkenbusch
1
你需要完全改变你的做法。你可以考虑使用jQuery来获取一个文件输入类型的数组,然后使用计数器作为该数组的索引。 - Erik Funkenbusch
@Mystere Man:感谢您的建议,您能否提供一些关于使用jQuery解决此问题的链接参考。 - ExpertWannaBe
你遇到了一个非常特定的问题,外面没有任何参考资料,你必须自己想办法解决。 - Erik Funkenbusch
所以我必须完全改变代码。/难过/感觉离成功很近了...在具有许多面板的aspx页面中,是否有另一种动态进行多重上传的方法? - ExpertWannaBe
1个回答

0

试试这个:

getElementByID('FileUpdate<%=counter%>').value

或者

getElementByID('<%=txtFileUpdate + counter.ToString()%>').value

@ Andrew Cooper:仍然出错,先生。在当前上下文中,名称'Counter'不存在。 - ExpertWannaBe
@ Andrew Cooper:
  1. 当前上下文中不存在名称为'FileUploadContainer'的内容。
  2. 当前上下文中不存在名称为'Counter'的内容。
- ExpertWannaBe
1
你需要发布更多的代码来展示上下文。counter 变量在哪里声明的? - Andrew Cooper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接