使用后端代码中的文本填充<asp:literal>



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

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

我在前端的文字组件

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

用于从后端填充文本组件的代码

String TableContents="";
foreach(....){
TableContents += " <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'></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'></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'></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'></asp:Label>"+
                                 "   </td>"+
                              "  </tr>"+
                         "   </table>"+
                        "</td>"+
                  "  </tr>"+
                "</table>";
            }
            DashboardContainer.Text = TableContents;

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

我不确定问题是什么。我遵循了我在这里读到的内容 - 如何动态创建 HTML 表?

我建议使用类似<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对象并将其设置为列表视图的 ItemType...你的会有所不同)或您的服务调用在Page_Load中获取数据的样子。

最新更新