繁体   English   中英

从asp.net传递JavaScript代码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM