Request.Form.FindAllKeys 在 IE8 中不起作用

Request.Form.FindAllKeys Not Working In IE8

本文关键字:不起作用 IE8 Form FindAllKeys Request      更新时间:2023-09-26

>我正在页面客户端创建文本框,如下所示。

  var _text = document.createElement("input");
        _text.setAttribute("type", "text");
        _text.setAttribute("id", "txtAsName" + num);
        _text.setAttribute("name", "txtAsName" + num);

在服务器端代码中,我检索表单上任何文本框的 id(您可以添加 txtAsName1、txtAsName2、txtAsName3,然后删除所有客户端的 txtAsName2,因此在我的情况下,在回发期间抓取表单左侧的任何文本框很重要)

我使用以下方法获取服务器端其余文本框的 ID:

 string[] allFormKeys = Request.Form.AllKeys;
                    foreach (string key in allFormKeys)
                    {
                     Response.Write("Key Name: " +key + "<br/>");
                        if (key.StartsWith("txtAsName"))
                        {
                            txtBoxes.Add(key);
                        }
                    }

在Firefox中,这工作正常,但在IE8 Request.Form.AllKeys中不返回文本框!我可以通过 Response.Write 看到这一点,在 firefox 中我得到了文本框。

我检查了 html 中是否有 2 个表单标签,但事实并非如此

您是否可能忘记将新创建的元素附加到表单中?

<script>
var input1 = document.createElement("input");
input1.setAttribute("type", "text");
input1.setAttribute("name", "testing123");
input1.setAttribute("value", "i like cake");
document.getElementById("formid").appendChild(input1);
</script>

你没有在你的问题中说你把文本输入元素添加到什么地方。我使用了您的代码,确保我将文本输入字段添加为表单元素中的某个位置的子字段,并且我肯定会看到它们被回发到服务器:

<div id="testDiv"></div>
<br />
<asp:Label ID="Label1" runat="server" />
<asp:Button runat="server" />
<script type="text/javascript">
    var num = 0;
    var _text = document.createElement("input"); _text.setAttribute("type", "text"); _text.setAttribute("id", "txtAsName" + num); _text.setAttribute("name", "txtAsName" + num);
    testDiv.appendChild(_text);
    num++;
    _text = document.createElement("input"); _text.setAttribute("type", "text"); _text.setAttribute("id", "txtAsName" + num); _text.setAttribute("name", "txtAsName" + num);
    testDiv.appendChild(_text);
    num++;
    _text = document.createElement("input"); _text.setAttribute("type", "text"); _text.setAttribute("id", "txtAsName" + num); _text.setAttribute("name", "txtAsName" + num);
    testDiv.appendChild(_text);
</script>

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form.AllKeys.Length > 0)
        {
            string keys = string.Join(", ", Request.Form.AllKeys);
            Label1.Text = string.Format("Found {0} keys: {1}", Request.Form.AllKeys.Length, keys);
        }
        else
        {
            Label1.Text = "Form.AllKeys.Length == 0";
        }
    }

当我运行它然后单击按钮时,标签显示:

Found 6 keys: __VIEWSTATE, __EVENTVALIDATION, txtAsName0, txtAsName1, txtAsName2, ctl00$MainContent$ctl00

我正在使用IE8。

查看生成的页面 html。可能存在从服务器生成不正确的 html 标记的可能性。即,某些 HTML 标签未使用关闭标签正确关闭。