Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在html页面中使用asp.net_C#_Asp.net_Sql - Fatal编程技术网

C# 在html页面中使用asp.net

C# 在html页面中使用asp.net,c#,asp.net,sql,C#,Asp.net,Sql,如果我想将asp.net代码与html标记文件结合起来,我需要打开并执行这些代码 如果我想在提供信息和创建行的同时使用selectquery遍历数据库,该怎么办。例如: <table> <% foreach(DataRow dr in dataset.Tables["empoloyees"].Rows) { %> <tr> <td> <asp:Label runat="Server" Text="<% dr[F

如果我想将asp.net代码与html标记文件结合起来,我需要打开并执行这些代码

如果我想在提供信息和创建行的同时使用selectquery遍历数据库,该怎么办。例如:

<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中经常使用它,这种做法好吗?或者我应该以某种方式将数据绑定到标签上?不知道如何绑定。但不知何故?

如果您试图获取一组数据并将其显示在表中,请尝试使用或之类的控件。

如果您希望一段标记迭代并绑定到它,我建议使用控件

   <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>

或者,使用a,尽管我发现中继器可以让您更好地控制发出的标记。

您就快到了。试试这个:

<table>

<%
   foreach(DataRow dr in dataset.Tables["empoloyees"].Rows)
   {
%>
<tr>
<td>
      <%= dr[FirstName].toString(); %>
</td>
<td>
      <%= dr[LastName].toString();%>
</td>
</tr>
<%
   }
%>
</table>

首先也是最重要的一点——不要将业务逻辑和数据访问功能与数据表示标记混为一谈

假设您使用的是WebForms,您可以使用页面/控件aspx.cs/ascx.cs的代码隐藏中绑定的,以便视图保持解耦,并仅绑定到数据源的特定属性:

ASPX:

你根本不需要使用。只需将代码放在runat=server的标记之间,然后继续使用标准的ASP.NET标记,例如ASP:TextBox runat=server。只需确保它是一个*.aspx页面


FWIW,你的问题对我来说有点倒退。如果您正在创建*.aspx页面,那么您可以在任何地方使用标准HTML。如果您试图以某种方式将ASP.NET压缩到一个*.html页面中,那么您就误解了ASP.NET的工作原理。

您应该使用转发器,而不是类似的东西

 <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>

对于所有类型的take a

列表,您不能在服务器端控件的标记中使用。这是一种非常经典的老式方法,几乎。。。正如geekchic建议的那样,使用repeater或Gridview并避免这种标记与逻辑的混合,因为ASP.NET具有将标记与代码隐藏分离的优势。查看您的一些评论,您可能试图避免使用ASP.NET控件,您是否查看过ASP.NET MVC?哈哈……我知道VBscript..哈哈。。我所看到的MVC与网络表单设计完全不同我真的需要学习MVC吗我的意思是如果我知道网络表单为什么要在设计中进行转换我还听说MVC有性能缺点或其他限制我记不起来了不谢谢你不要相信100%我想用sql自由编程controls@Matrix001为什么?重新发明方向盘?我只是不太熟悉每一个控件。我可能还想在设计上更加灵活,而不是局限于那些控件的每一个标签have@Matrix001中继器允许您完全控制输出。他们不会在没有你特别放进去的情况下吐出任何HTML。GridView是非常结构化的。是的,它提醒我,…网格..它给我带来的所有标记的头痛我需要更多地了解Databinder..那么你是说绑定是最好的。。而不是我写的?@Matrix001-数据绑定更像是ASP.NET。你可以用你现有的方式使用foreach,但是把迭代逻辑和标记混合在一起会被认为更混乱。是的,我知道,,。我知道它不是经典的asp.net。但是假设我想那样做的话…我能那样做吗?嗯…谢谢你的语法。。。
employees.DataSource = dataset.Tables["empoloyees"].Rows;
employees.DataBind();
 <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();