gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:27:26 25 4
gpt4 key购买 nike

美好的一天,

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

<小时/>

[问题文本框]

[文本框][文本框][文本框][文本框][向该行添加附加文本框的按钮(最多仅额外添加 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。有没有更好的方法来创建这个页面?我只是做错了什么吗?任何帮助将不胜感激。

最佳答案

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

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

第二) JavaScript 部分。用户向表单添加字段(需要在客户端的 Javascript 中完成),检查这个答案: How add new hidden input fields to the form on submit

第 3) C# 部分。在表单请求中,您需要循环所有 request.form 项目,因为您不知道它们有多少。这可以通过这样的事情来完成:

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

关于javascript - 如何动态地将 html 元素添加到页面并在 asp.net 中访问它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38587287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com