[英]Pass javascript code from asp.net
我试图将一些我在服务器端使用String Builder构建的JavaScript代码(后面是ASP.NET代码)传递给html页面上的JavaScript。 这就是我在做什么。
我确实使用母版页和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。 似乎在脚本标签内无法读取文字ID。 我不能使用的div或span标签文字周围的控制,这是脚本标记内。 div / span将在JavaScript代码中留下流浪标记。 任何帮助,将不胜感激。
谢谢!
首先,您是否使用母版页? 如是? 其Master.FindControl()
。 除此之外,您是否有附加特定理由? 建议您使用RegisterStartupScriptBlock()
方法或RegisterClientScriptBlock()
方法
据我了解,您正在尝试从后面的代码中将一些脚本分配给文字控件。
据我所知,您的文字应该在.aspx页面中。 准备后面代码中的任何字符串生成器,并在字符串生成器准备就绪后,将代码中的字符串生成器分配给文字。
this.SomeID.Text = SomeStuff();
您是否尝试过以下方法:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.