在代码后面生成的Asp.net / vb元素不会在HTML中呈现

时间:2017-02-07 14:50:12

标签: html asp.net

我会尝试更好地解释自己。

我的asp.net vb中存在这个问题,在我生成html内容的代码中,数据从数据库中提取。

问题来自于我必须生成一个asp元素(比方说,一个asp按钮或一个asp下拉列表),问题是asp元素在html代码中生成。但它们没有显示,按钮和下拉列表是不可见的,如果我按F12代码就在那里。

这是代码即时生成:

在aspx页面中我有这个:

<div id="tarjetas"  runat="server"></div>

然后在代码背后我有这个:

html = "<div class='col-lg-3'> <div class='panel panel-default'> <div class='panel-heading' style=' background-color: #1c72dc; '>Nº: " & id_ticket.ToString & " - " & Urgente.ToString & " </div> <!-- /.panel-heading --> <div class='panel-body'> <div class='row'> <div class='col-lg-12 col-lg-12'> <div class='thumbnail' style='background-color:rgba(60, 88, 188, 0.15); border-color: red;'>  <div class='caption'> <h2>DIR: " & Calle_Numero.ToString & "</h2> <h4>ED: " & Nombre_Edificio.ToString & "</h4> <h4>TIPO: " & Tipo_Urgente.ToString & "</h4> <h4>TEL: " & Tel_Contacto.ToString & "</h4> <h5>DETALLE: " & Detalle_Problema.ToString & "</h5> <p style='text-align: center;'> <asp:DropDownList ID='ddlGender' runat='server' Width='200px'> <asp:ListItem Text='Select Gender' Value='0'></asp:ListItem> <asp:ListItem Text='Male' Value='1'></asp:ListItem> <asp:ListItem Text='Female' Value='2'></asp:ListItem> </asp:DropDownList> </p> <p style='text-align: center;'>   </p> </div>   </div>  </div>  </div>  </div>  </div>  </div>

来自背后的代码。然后我做

Label.Text = html
tarjetas.Controls.Add(Label)

如何让按钮(特别是下拉列表)显示在aspx中?

Rendered HTML

先谢谢,我是新手。我搜索了很多,但无法找到答案。

1 个答案:

答案 0 :(得分:1)

你在做什么永远不会工作。您正在将asp:controls创建为字符串并将其添加到页面中。因此,它们甚至不会显示在浏览器中,因为它们不了解标记<asp:

选项1

创建&#34;真实&#34; DropDownList在html字符串中并放在页面上。

<select name="ddlGender" id="ddlGender">
    <option value="1">Item 1</option>
    <option value="2">Item 2</option>
</select>

背后的代码

Dim html As String = "<select name=""ddlGender"" id=""ddlGender""><option value=""1"">Item 1</option><option value=""2"">Item 2</option></select>"

选项2 (最佳选择)

你可以做的是直接在aspx页面上放置一个Control,然后用ListItems填充它,无论是在代码后面还是在页面本身上。

<asp:DropDownList ID="ddlGender" runat="server">
    <asp:ListItem Text="Item 1" Value="1"></asp:ListItem>
    <asp:ListItem Text="Item 2" Value="2"></asp:ListItem>
</asp:DropDownList>

代码背后。

ddlGender.DataSource = mySource
ddlGender.DataTextField = "textField"
ddlGender.DataValueField = "valueField"
ddlGender.DataBind

//or

ddlGender.Items.Insert(0, New ListItem(("Item 1 - " + i), ("1-" + i.ToString), true))
ddlGender.Items.Insert(1, New ListItem(("Item 2 - " + i), ("2-" + i.ToString), true))

选项3 (最复杂)

在代码后面动态创建控件并将其添加到PlaceHolder

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    Dim i As Integer = 0
    Do While (i < 5)
        Dim ddl As DropDownList = New DropDownList
        ddl.ID = ("ddlGender_" + i)
        ddl.Items.Insert(0, New ListItem(("Item 1 - " + i), ("1-" + i.ToString), true))
        ddl.Items.Insert(1, New ListItem(("Item 2 - " + i), ("2-" + i.ToString), true))
        PlaceHolder1.Controls.Add(ddl)
        i = (i + 1)
    Loop

End Sub