将c#数组写入ASPXHTML页面

将c#数组写入ASPXHTML页面,c#,asp.net,C#,Asp.net,如何获取C#数组并将其写入HTML表头 据我所知,您应该能够使用cnippets获取变量,但它不起作用 C#代码 protected void Page_Load(object sender, EventArgs e) { string[] tableHeaders = { "Urgency", "Picker", "CARD",

如何获取C#数组并将其写入HTML表头

据我所知,您应该能够使用cnippets获取变量,但它不起作用

C#代码

protected void Page_Load(object sender, EventArgs e)
        {
            string[] tableHeaders = {
                "Urgency", 
                "Picker", 
                "CARD", 
                "Case Order", 
                "CR #", 
                "Patient", 
                "Age", 
                "ASA", 
                "Anes Consult", 
                "Procedure", 
                "Booking Surgeon", 
                "Operating Surgeon", 
                "Ready Date", 
                "Ready Time", 
                "NPO Since", 
                "EST Time", 
                "Current Location", 
                "Postop Need", 
                "Booked by", 
                "Special Equipment", 
                "Comments"
            };
        }
HTML代码 您将在我的document.write行中看到我尝试调用tableHeaders变量。我使用javascript行变量作为计数器

<thead>
  <tr>
    <script type="text/javascript">
      for (var row = 0; row <= 21; row++) {
        document.write("+<%= tableHeaders[+row+] %>+")
      }
    </script>
   </tr>
 </thead>

对于(var row=0;row您正在
Page\u Load
中创建一个局部变量,然后尝试从页面脚本访问它。您可以将其改为类成员:

(在
页面加载
或任何其他方法之外):


假设您想要为表创建实际的标题单元格,那么您应该能够在c代码隐藏中完成这一切,除非您需要将内容转储到JavaScript中。向
元素添加一个ID和一个runat属性:

<thead>
    <tr ID="headerRow" runat="server">
    </tr>
</thead>

然后,当页面呈现时,它应该将每个元素呈现为行中的
元素。

我不应该尝试使用Java脚本来实现这一点。下面的操作非常有效

 <%
     for (int td = 0; td <= 20; td++)
     {
         Response.Write("<td>" + tableHeaders[td] + "</td>");
     }
 %>


使tableheaders成为一个全局属性您是想在行中创建动态的
元素,还是只是写出一个标题名列表?是的。我刚听说您不能在java脚本中放入C变量,这就意味着我的问题无效。@Frantumn:我不会说您的问题没有您尝试的那么有效解决方案无法按照您的设想完成工作。尽管对问题进行编辑可能会使其更加清晰。也许您想使用。我喜欢这个答案,但我遇到了一个错误。错误3参数1:无法从“System.Web.UI.WebControl.TableHeaderCell”转换为“System.Web.UI.HtmlControl.HtmlTableCell”,我可能需要一些使用状态(我仍然习惯于C#)。变量headerRow从何而来?TableRow headerRow=new TableRow();需要高于for each。@Frantumn:不,不需要。如果你阅读整个答案,你会发现
headerRow
是由标记中的ID指定的。这就是为什么你需要
runat=“server”
作为标记的一部分。因为
headerRow
是在没有任何特定父元素的情况下指定的,所以它应该在不使用
FindControl(“headerRow”)
的情况下可用。如果在父元素(例如table)上指定了
runat=“server”
,则需要使用
FindControl
protected void Page_Load(object sender, EventArgs e)
{
    string[] tableHeaders = { // blah blah };

    foreach(var header in tableHeaders)
    {
        var tmp = new TableHeaderCell();
        tmp.ID = "TH_" + header;
        tmp.Text = header;
        headerRow.Cells.Add(tmp);
    }
}
 <%
     for (int td = 0; td <= 20; td++)
     {
         Response.Write("<td>" + tableHeaders[td] + "</td>");
     }
 %>