【问题标题】:Add HTML to server form when dynamically adding form elements ASP.NET动态添加表单元素 ASP.NET 时将 HTML 添加到服务器表单
【发布时间】:2016-03-18 14:40:34
【问题描述】:

我有一个数据库表,用于存储某些表单的自定义字段。我正在从后面的代码动态构建这些表单,它可以工作,但看起来很糟糕。我希望能够将表格包装在表格中。

我有以下代码来动态创建表单元素。通过使用循环,我可以为每个自定义字段创建标签和输入框

Label label = new Label();
label.Text = field["fieldname"];
newclientform.Controls.Add(label);

TextBox textinput = new TextBox();
textinput.ID = field["uiname"];
newclientform.Controls.Add(textinput);

所有静态表单元素都正确包装在 HTML 中,因为我可以将其写入 aspx 文件,但这些动态元素都没有包装在 HTML 中。 我尝试了以下方法,但没有呈现任何 HTML

label.Text = "<tr><th>" + field["fieldname"] + "</th></tr>";

如何将这些表单元素包装在 HTML 中?

【问题讨论】:

    标签: html asp.net forms


    【解决方案1】:

    我可以建议您使用中继器或任何其他类似功能。在代码隐藏处创建一个转发器,使用文字对象插入正确的 html 标签,然后放置您的文本框,并用另一个文字关闭它。

    Literal 是将您的 HTML 代码发送到接口的最干净的对象,因为 Label 对象是使用不必要的 HTML 标记呈现的,这可能首先导致您的问题。

    【讨论】:

      【解决方案2】:

      首先,我的英语很差。 以你的方式,我不知道你能不能做到, 但我认为你需要试试这个控件----PlaceHolder。

      <asp:PlaceHolder ID="placeHolderId" runat="server">
           on here, you can write any dom element
      </asp:PlaceHolder>
      

      在后面的代码中,就像那样--------

       placeHolderId.Controls.Add(yourControlObject);
      

      【讨论】:

      • 这是个好主意,但是如何添加多个?我不知道会有多少自定义字段。可能是 1 可能是 10。如何创建具有唯一 ID 的多个占位符? ASP.net 不允许使用动态 ID,否则我不需要使用背后的代码
      • 将dom添加到页面中最好的方式是Ajax,WebForm有一些缺点,比如页面回发时,一些控件的数据会重置,你要判断if(Page.IsPostBack == true),特别是下拉列表。但是,如果你选择 Ajax,你只需要将数据序列化为 json 并写入响应的流中。因此,使用 javascript 的“XMLHttpRequest”对象来接收和--- var obj =JSON.Prase(xmlHttpRequestObj);到一个对象中,然后 for( obj 中的属性){ 将 obj[attribute] 打包到一个 dom 中,并添加到页面中}。不好意思,我的英文很差,不知道怎么修改comment上的代码样式
      • PlaceHolder 可以添加任意数量的控件-----placeHodlerId.Control.Add(ctrl1); placeHolder.Control.Add(ctrl2); placeHolder.Control.Add(ctrl3);还有更多,没问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多