我尝试编写Control(.ascx)来管理我内部页面的横幅。
我是通过切换案例来实现的,每个ID都匹配正确的横幅。问题 - 如何将Adwords JS脚本放在switch break;
?
应该是这样的:
switch(_bannerId)
{
case "banner1":
{
<script type= >
Google adsense code
</script>
}
case "banner2":
{
<script type= >
Google adsense code
</script>
}
break;
}
有可能吗?怎么做?
修改 的
它不适用于Response.Write()
我尝试搜索“如何从代码后面调用Javascript”但我找不到合适的帖子。
答案 0 :(得分:0)
你不能简单地混合使用c#代码和html,你需要将html代码视为字符串并将它们添加到页面输出中。
将此.ascx文件添加:
<Asp:Literal runat="server" ID="AdwordsScript"></Asp:Literal>
然后到你的ascx.cs文件:
switch(_bannerId)
{
case "banner1":
{
AdwordsScript.Text= @"<script type=""text/javascript"">
//Google adsense code 1
</script>";
}
break;
case "banner2":
{
AdwordsScript.Text= @"<script type=""text/javascript"">
//Google adsense code 2
</script>";
}
break;
}
答案 1 :(得分:0)
调用Response.Write()
将破坏输出标记,即它将在调用Render()
之前写入内容,从而将脚本放在文档的标记之外。向页面添加Literal
,并将Text
的{{1}}属性设置为等于脚本。
Better still, just use RegisterStartupScript()
。它适用于这样的场景,可让您更好地控制脚本执行的时间。如果您在页面上使用Literal
,则会有similar method。
或者,为了避免代码中的大型脚本字符串,您可以在标记中的ScriptManager
中声明所有脚本,并根据您的switch语句显示/隐藏它们。
Placeholders
switch(_bannerId){
case "banner1":
this.plhScript1.Visible = true;
break;
case "banner2":
this.plhScript2.Visible = true;
break;
default:
throw new InvalidOperationException( "Unknown banner type" );
}