在html页面中使用asp.net
本文关键字:asp net html | 更新日期: 2023-09-27 18:12:29
如果我想将asp.net代码与html(标记)文件组合,我需要打开<% %>并执行代码。
如果我想在数据库上迭代选择查询,同时提供信息和创建行。例如:
<table>
<%
foreach(DataRow dr in dataset.Tables["empoloyees"].Rows)
{
%>
<tr>
<td>
<asp:Label runat="Server" Text="<% dr[FirstName].toString(); %>"/>
</td>
<td>
<asp:Label runat="Server" Text="<%dr[LastName].toString();%>"/>
</td>
</tr>
<%
}
%>
</table>
语法是否正确…并且这种做法是否良好(它总是在php中使用)?还是应该以某种方式将数据绑定到标签?(不知道怎么回事。但不知何故)?
如果你想把一组数据显示在一个表中,然后尝试使用控件,如GridView或Repeater
首先也是最重要的一点——不要将业务逻辑和数据访问功能与数据表示标记混合在一起!
假设你正在使用WebForms,你可以使用Repeater控件,它被绑定在页面/控件(aspx.cs/asx .cs)后面的代码中,所以视图保持解耦,只是绑定到数据源的特定属性:
ASPX:
<asp:Repeater ID="employees" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label runat="Server"
Text="<%# DataBinder.Eval(Container.DataItem, "FirstName") %>"/>
</td>
<td>
<asp:Label runat="Server"
Text="<%# DataBinder.Eval(Container.DataItem, "LastName") %>"/>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
代码背后:(例如Page_Load ())
employees.DataSource = dataset.Tables["empoloyees"].Rows;
employees.DataBind();
如果你想要一段标记迭代并绑定到它,我建议使用Repeater控件。
<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td> <%# DataBinder.Eval(Container.DataItem, "FirstName") %> </td>
<td> <%# DataBinder.Eval(Container.DataItem, "LastName") %> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
也可以使用GridView
,不过我发现Repeater
可以让您更好地控制所发出的标记。
你就快成功了。试试这个:
<table>
<%
foreach(DataRow dr in dataset.Tables["empoloyees"].Rows)
{
%>
<tr>
<td>
<%= dr[FirstName].toString(); %>
</td>
<td>
<%= dr[LastName].toString();%>
</td>
</tr>
<%
}
%>
</table>
您应该使用像这样的重复器
<table>
<asp:Repeater runat="server" ID="userRepeater" >
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem,"FirstName")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"LastName")%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
和代码后面的
userRepeater.DataSource = dataset.Tables["empoloyees"];
userRepeater.DataBind();
查看所有类型<% %>的列表
根本不需要使用<% %>。只需将代码放在runat="server"标签之间,然后继续使用标准ASP。. NET标签(例如asp:TextBox runat="server")。只要确保它是*。aspx页面。
顺便说一句,你的问题在我看来有点落后。如果您正在创建*。那么你可以在任何你想要的地方使用标准的HTML。如果你试图压制ASP。. NET转换成*.html页面——那么你就误解了ASP。净工作。