我正在尝试使用后端.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中获取数据的样子。