从asp.net传递javascript代码

时间:2014-01-02 05:25:49

标签: c# javascript asp.net

我正在尝试将一些JavaScript代码传递给html页面上的JavaScript,这些代码是我在服务器端使用String Builder(后面的ASP.NET代码)构建的。这就是我在做什么。

我确实使用了Master Page和aspx页面:

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<script  type="text/javascript">
// Some initial JavaScript code
// followed by a Literal tag, to be replaced by 
// JavaScript code block which comes from code behind
<asp:Literal runat="server" ID="SomeID"></asp:Literal>

// some more JavaScript.
</script>
</asp:Content>

然后在aspx.cs页面后面的代码中:

protected void Page_Load(object sender, EventArgs e)
{
  Literal ID = (Literal)this.Page.FindControl("SomeID");
  ID.Text = SomeStuff();
}
private string SomeStuff()
{
  string javascript = "";
  StringBuilder sb = new StringBuilder();
  sb.Append("Some JavaScript Code");
  sb.Append("dynamically buildup on server side");
}

然而问题是 this.Page.FindContol(“SomeID”)返回NULL。在脚本标记内部,看起来无法访问Literal ID。我不能在Literal控件周围使用div或span标签,它位于 script 标签内。 div / span将在JavaScript代码中留下迷路标记。任何帮助将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:0)

首先,您使用的是母版页吗?如是?它的Master.FindControl()。除此之外,你有什么理由想要追加?建议您使用RegisterStartupScriptBlock()方法或RegisterClientScriptBlock()方法

答案 1 :(得分:0)

据我了解,您正在尝试从后面的代码中为文字控件分配一些脚本。

正如我所知,在这种情况下,你的文字应该在.aspx页面中。 准备后面的代码中的字符串构建器,并在字符串构建器准备就绪后,将字符串构建器从后面的代码中分配给文字。

this.SomeID.Text = SomeStuff();

答案 2 :(得分:0)

你试试这个:

protected void Page_Load(object sender, EventArgs e)
{  
var literals = Page.Master.FindControl("SomeID").Controls.OfType<Literal>();
// Literal ID = (Literal)this.Page.FindControl("SomeID");
 this.literals.Text = SomeStuff();
}

private string SomeStuff()
{
 string javascript = "";
 StringBuilder sb = new StringBuilder();
 sb.Append("Some JavaScript Code");
 sb.Append("dynamically buildup on server side");
 return sb;
}