如何将html元素动态添加到页面中并在asp.net中访问它们

本文关键字:asp net 访问 html 元素 动态 添加 | 更新日期: 2023-09-27 17:58:41

你好,

我已经尝试了一天多,想办法使用visualstudio动态地向网页添加元素并访问它们的值。我要么把整件事复杂化了,要么我很笨,要么真的没有办法做我想做的事,哈哈。我正在尝试创建一个页面,该页面应该能够生成可能超过100个以下html项目集:它基本上是一种问答形式,用于创建多项选择测试。有一个区域可以键入问题,然后在多选项中添加其他文本框。还有一个按钮可以向回答区域添加额外的2个文本框(无论它们是创建并添加到表行的div中,还是隐藏并在按下按钮时显示)


[问题文本框]

[Textbox][Textbox][Textbox][Textbox][向此行添加额外文本框的按钮(最多只添加2个)]

[确认按钮提交文本框中的文本]


[添加上述元素的另一个副本的按钮(最多100个)]

我很想创建一个普通的表单(因为这可能是最简单的),但这需要在网络上工作。我知道跟踪所有这些内容可能是一场噩梦,但我想不出其他选择(嗯,我想过其他选择,但似乎更复杂)。我尝试了以下操作:我尝试在表单元格中添加一个div来添加文本框,但之后无法访问该div。有办法做到这一点吗?如果我可以使用innerHtml方法访问我创建的元素,我或多或少会很好,但我在网上找不到任何东西。

QuestionContent.InnerHtml += "<table runat='"server'" style='"width: 100 %; '"><tr><td> Question " + _QuestionNum + " </td></tr><tr><td class='"auto - style1'"><div id='"divQ"+_QuestioNum+"'"></div></td></tr></table>"; 
//Might have an issue adding an element with runat=server, but this was the only way I could think of extracting a value that is created dynamically in C#.
                    ((System.Web.UI.HtmlControls.HtmlGenericControl)mainPanel.FindControl("divQ1")).InnerHtml = "<asp:TextBox ID='"txtChoice1'" runat='"server'">Choice1</asp:TextBox>"; 
    //Here I try to access the div created above. Unrelated: Also tried with a normal textbox, but I realise that creating an asp textbox here might cause issues.

我似乎无法访问我在C#中创建的任何东西。有更好的方法吗?在放弃这个想法后,我尝试使用javascript创建元素。我仍然需要弄清楚是否可以使用javascript将值传递给C#,但我现在遇到了另一个问题。每当运行以下代码时,元素就会出现,但随后会立即消失。这是asp.net的问题吗?谷歌的搜索结果没有多大帮助。

function addQuestion() {
if (numQuestions == limit) {
    alert('Maximum question limit reached. Consider breaking this test up into multiple tests.');
}
else {
    var newdiv = document.createElement('div');
    newdiv.setAttribute('id', 'divQ' + numQuestions);
    newdiv.innerHTML = '<table><tr><td> Question' + numQuestions + '</td></tr><tr><td>';
    for(var i=0;i<6;i++){
        newdiv.innerHTML += "<input type='"text'" name='"textBox"+i+"'">";
    }
    newdiv.innerHTML += '</td></tr></table>';
    numQuestions++;
    document.getElementById('divQuestionContent').appendChild(newdiv);       
}

}

但是,如果可以的话,我希望避免使用javascript。有更好的方法来创建这个页面吗?我只是做错了什么吗?任何帮助都将不胜感激。

如何将html元素动态添加到页面中并在asp.net中访问它们

我认为您正在混合服务器端和客户端代码。

1st)使用您的第一个已知必需字段创建html表单

第二)Javascript部分。用户将字段添加到表单中(需要在客户端的Javascript中完成),请检查以下答案:如何在提交时向表单添加新的隐藏输入字段

3rd)C#部分。对于表单请求,您需要遍历所有request.form项,因为您不知道它们有多少。这可以用这样的东西来完成:

StringBuilder s = new StringBuilder();
foreach (string key in Request.Form.Keys)
{
    s.AppendLine(key + ": " + Request.Form[key]);
}
string formData = s.ToString();