用来自后端代码的文本填充<asp:literal>

时间:2019-01-08 18:37:12

标签: c# html css asp.net

我正在尝试使用后端.aspx文件中的文本填充.net组件。但是,当我测试我的Web应用程序时,表中的大多数元素都丢失了。

在尝试从.aspx文件中的后端将代码作为长字符串运行之前,我从.aspx.cs文件中将其作为HTML代码运行,以检查输出是否符合预期。

我的前端文字组件

(ServiceBase.Run(service);

代码从后端填充文字组件

<asp:Literal ID="DashboardContainer" runat="server">
                    <%-- dashboard stuff --%>
                </asp:Literal>

实际结果只是一个带边框的表,里面没有任何东西。预期结果应包含3个单独的表,每个表都带有标签和文本。

我不确定是什么问题。我遵循了在这里阅读的内容-How to dynamically create an HTML Table?

1 个答案:

答案 0 :(得分:2)

我建议使用类似<asp:ListView />的方法来完成类似的操作。在aspx页上管理HTML比在.cs代码后的字符串中管理字符串更容易。

一个简单的实现如下:

ASPX页面

<asp:ListView runat="server" ID="lvProjects" ItemType="Domain.Models.Project">
        <ItemTemplate>
            <table style="width: 100%; border-color:lightgray; border-style:solid; border-top:none; border-left:none; border-right:none; border-width:0.5px;"> 
                <tr> 

                    <td style="width: 25%;">  
                    <table style="width:95%;">  
                        <tr> 
                            <td> 
                                <asp:ImageButton ID="ImageButton1" runat="server" CssClass="ImageBtn" ImageUrl="Images/TrackingImg.PNG" />  
                            </td> 
                        </tr>  
                        <tr>
                            <td>
                                <asp:Label ID="DashboardID" runat="server"></asp:Label>
                            </td>
                        </tr>
                    </table>
                </td>

                <td style="width: 30%;">
                    <table style="width:95%;">
                        <tr>
                            <td>
                                <asp:Label ID="Label6" runat="server" CssClass="DashboardLabel" Text="Project Title:"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label ID="ProjectTitleTxt" runat="server" Text="<%#Item.ProjectTitle%>"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label ID="Label7" runat="server" CssClass="DashboardLabel" Text="Created By:"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label ID="CreatedByTxt" runat="server" Text="<%#Item.CreatedBy%>"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label ID="Label9" runat="server" CssClass="DashboardLabel" Text="Date Created:"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label ID="DateTxt" runat="server" Text="<%#Item.DateCreated%>"></asp:Label>
                            </td>
                        </tr>
                    </table>
                </td>

                <td style="width: 35%">
                    <table style=" width:95%;">
                        <tr>
                            <td>
                                    <asp:Label ID="Label8" runat="server" CssClass="DashboardLabel" Text="Project Description:"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td style=" width:95%;  height:120px;">
                                <asp:Label ID="DescriptionTxt" runat="server" Text="<%#Item.Description%>"></asp:Label>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            </table>
        </ItemTemplate>
    </asp:ListView>

CS

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            lvProjects.DataSource = ProjectService.GetAll();
            lvProjects.DataBind();
        }
    }

现在,ListView将为数据集中的每一行呈现<ItemTemplate>中的HTML。

当然,我不知道您的对象是什么(这里我只是组成了Domain.Models.Project对象,并将其设置为listview的ItemType ...您的对象将有所不同)或您的服务调用是什么看起来想要在Page_Load中获取数据。