0

我是 ASP.NET 和用户控件的新手。我正在尝试从我的 C# 代码生成一个 javascript 数组。

在主 .aspx 页面上,我有这个:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="main.aspx.cs" Inherits="main" %>
<%@ Register Src="~/table.ascx" TagPrefix="uc1" TagName="myTable" %>

然后在我的 table.asc.cs 我有这个:

protected void Page_Load(object sender, EventArgs e)
{
    (...)
    this.LoadDataFromDB();
    (...)
}

private void LoadDataFromDB()
{
    (...)
    Response.Write(array);
    (...)
}

我的问题是数组是在<html>标签之前写入的。它仍然可以正常工作,但是,我怎么能把它放在<head>标签中呢?

谢谢

更新:

我将此添加到我的 main.aspx

<asp:Literal ID="Literalarray" runat="server" Mode="PassThrough"  Text="" /> 

这对我的 ascx.cs:

   Literal Literalarray= new Literal();
   Literalarray.Text = output;

我错过了什么?

4

2 回答 2

4

使用Literal控件而不是Response.Write. 将它放在您的控件上的某个地方并设置它的Text属性。

你必须把它放在你的控件上,而不是你的页面上,你不需要重新初始化它。

于 2013-07-02T14:57:09.763 回答
1

ascx.cs 中的这段代码:

   Literal Literalarray= new Literal();
   Literalarray.Text = output;

应该:

   Literalarray.Text = output;

应该在 Page_Load 中作为设计器文件将声明文字类型并为其分配空间。通过声明一个新的,旧的可能会被隐藏。另外,请注意,如果您正在生成一个 JavaScript 数组,那么您还会生成脚本标记作为输出的一部分,因为文字不会对结果进行太多修饰。


我可能会建议在 main.aspx 的头部放置一个文字,并以这种方式加载数据以获得一个想法。

您还可以进行动态控制,以便在 table.ascx.cs 中像以前一样创建一个 Literal,然后假设 head 标签具有“runat=server”属性,然后将其添加到页面的头部,这样后面的代码可以用它。我很确定在表格后面的代码中您可以执行以下操作:

   Literal Literalarray= new Literal();
   Literalarray.Text = output;
   this.Page.head.AddControl(Literalarray);
于 2013-07-02T15:43:13.097 回答