在ASP.NET中加载文本框周围的内容

本文关键字:周围 文本 ASP NET 加载 | 更新日期: 2023-09-27 18:02:45

我试图在ASP中创建一个表单。. NET,但我想知道如果我可以动态地添加一个文本框周围的HTML内容。

代码如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/MPpacientes.master" AutoEventWireup="true" CodeFile="CuestionarioGeneral.aspx.cs" Inherits="CuestionarioGeneral" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="navbar" Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="headertitle" Runat="Server">
Cuestionario General
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="contentbox" Runat="Server">
<legend>Lorem ipsum dolor sia met etcetcetc</legend>
<%-- question1 --%>
<asp:Label ID="lbl1" runat="server" Text="1"></asp:Label>
<div class="input-control text" data-role="input-control">
    <asp:TextBox ID="txt1" runat="server"></asp:TextBox>
    <button class="btn-clear" tabindex="-1"></button>
</div>
<%-- question2 --%>
<asp:Label ID="lbl2" runat="server" Text="2"></asp:Label>
<div class="input-control text" data-role="input-control">
    <asp:TextBox ID="txt2" runat="server"></asp:TextBox>
    <button class="btn-clear" tabindex="-1"></button>
</div>
<%-- question3 --%>
   <%-- etc --%>

在代码中可以看到,

和<标签在每个问题中都不会改变,所以我想知道是否有一些方法可以从脚本加载它们,以便在页面加载时自动环绕每个文本框。>

每一页的总问题是不同的还是相同的?如果不一样,你可以试着用asp:Repeater。您可以动态更改问题,并为每个问题保持按钮和div静态。

例如:

<asp:Repeater ID="rptQuestion" runat="server" OnItemDataBound="rptQuestion_ItemDataBound">
    <ItemTemplate>
        <asp:Label ID="lblQuestion"></asp:Label>
        <div class="input-control text" data-role="input-control">
            <asp:TextBox ID="txtAnswer" runat="server"></asp:TextBox>
            <asp:Button CssClass="btn-clear" TabIndex="-1" ID="btnClear" runat="server"></button>
        </div>
    </ItemTemplate>
</asp:Repeater>
编辑:

要编辑Label文本,您可以首先将所有问题添加到List<String>,然后将其绑定到中继器,示例如下:

on PageLoad:

protected void Page_Load(object sender, EventArgs e)
    {
        List<String> listQuestion = new List<String>();
        foreach(string question in ...)
        {
            listQuestion.Add(question);
        }
        rptQuestion.DataSource = listQuestion;
        rptQuestion.DataBind();
    }

then on ItemDataBound事件:

protected void rptQuestion_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                String question = (String)e.Item.DataItem;
                Label lblQuestion = (Label)e.Item.FindControl("lblQuestion");
                lblQuestion.Text = question;
            }
        }

你不需要改变标签和文本框的ID,因为在重复器

在ASP.NET中加载文本框周围的内容

中每个条目的ID总是不同的

如果你只需要添加一个问题,你可以添加一个<asp:label />标签,甚至一个Html label标签,并使其成为runat="server"。然后你可以在

后面的代码中动态地为标签添加文本