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