在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中使用)?还是应该以某种方式将数据绑定到标签?(不知道怎么回事。但不知何故)?

在html页面中使用asp.net

如果你想把一组数据显示在一个表中,然后尝试使用控件,如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。净工作。