ASP.NET - 如何动态生成标签

时间:2009-04-09 11:39:18

标签: asp.net dynamic-controls

我正在做一个关于航班预订系统的项目。我的部分是输入旅客的详细信息。这些乘客可能包括成人和儿童。所以我需要为所有旅行的乘客动态生成单独的标签和文本框,以便输入所有旅行者的详细信息。

我该怎么做?

7 个答案:

答案 0 :(得分:2)

您可能需要查看GridViews / DetailsView / Repeaters等。 然后,您可以编写一些数据绑定代码,以根据需要显示每条记录的不同标签。

正如其他人所说的那样,需要更多的信息来正确回答这个问题。也许您可以发布一些已经存在的代码,以便我们指出您的下一个方向。

答案 1 :(得分:1)

您可以使用Response.Write()

生成整页

答案 2 :(得分:1)

不要严厉,但要从http://www.asp.net/learn/开始。如果您有更具体的问题,请编辑原始的,非常模糊的问题。

答案 3 :(得分:1)

在后面的代码中添加控件非常容易 - 请查看controls.Add()方法。

答案 4 :(得分:1)

只是为了增加其他一些人的说法:如果你采用这种方法,那么我的猜测是你真的不明白ASP.NET如何在基础层面上运作。

如果你想显示一个乘客列表,那么 last 你要做的就是为每位乘客动态生成一个标签控件 - 这在很多层次上都是错误的。

我能想到两种解决方案。首先,您可以将一个标签放在适当的位置,然后在此标签上填写为了呈现乘客所需的HTML(包括任何href)。其次,您可以使用GridView或其中一个类似控件来呈现此类信息。这是罗宾的建议,这确实是最好的方法。

答案 5 :(得分:1)

您的页面包含一个控件集合,您可以使用它来添加新的控件,如标签和文本框,即

您可以使用代码隐藏访问此控件集合,访问Page.Controls属性并附加要在页面中显示的控件,然后呈现这些控件。

您可以查看:http://msdn.microsoft.com/en-us/library/system.web.ui.control.createchildcontrols.aspx

以下是您可以尝试的简单示例:

Codefront( aspx webfor m)

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test Website</title>
</head>
<body>
    <form id="form1" runat="server">

    <div>
    <!-- here you can place the static text and other elements -->
        <h1>TESTING</h1>
        blah blah blah blah blah
    </div>

    <div id="placeholder" runat="server">
    <!-- here is where the dinamically created elements will be placed -->
    </div>

    </form>
</body>
</html>

代码隐藏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page  {

    protected override void CreateChildControls(){

        // Add a Label to the current ControlCollection.
        Label lbl = new Label();
        lbl.Text = "Label text";
        placeholder.Controls.Add(lbl);

        // Create a text box control, set the default Text property, and add it to the ControlCollection.
        TextBox box = new TextBox();
        box.Text = "Textbox text";
        placeholder.Controls.Add(box);

    }

}

希望这个帮助;)

答案 6 :(得分:0)

有时创建自己的服务器控件要容易得多。通过这种方式,您可以更轻松地控制输出的HTML,并且可以用更少的代码更好地控制不同的浏览器和语言。