我正在尝试将一些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代码中留下迷路标记。任何帮助将不胜感激。
谢谢!
答案 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;
}