您的位置:首页 > 编程语言 > ASP

asp.net后台调用前台脚本代码

2013-09-24 09:47 281 查看
服务器调用JavaScript方法是个不错的路子,但理论上是不可能,服务器给浏览器的时一个新的HTML文本,又不是调用函数的句柄,但是如果我们往新的HTML页面里添加的调用此方法的语句不就实现了吗?来看看我们怎么实现向新的HTML文本中添加调用JavaScript的语句。

<form id="form1" runat="server">
<div id="test">
改我</div>
<div>
<asp:Button ID="btnModify" runat="server" Text="Modufy" OnClick="btnModify_Click" />
</div>
</form>
<script type="text/javascript">
function modifyDivLiteral(newliteral) {
//..............
//一系列不是服务器改文字能处理的操作,比如创建新的Array、改变Div背景颜色,调用其他JavaScript函数
//............
document.getElementById('test').innerHTML = newliteral;
}
</script>
<script type="text/javascript">
<asp:Literal ID="ltrScript" runat="server"></asp:Literal>
</script>


在后台我们调用:

protected void btnModify_Click(object sender, EventArgs e)
{
this.ltrScript.Text = "modifyDivLiteral('改好了');";
}


上面是一种思路,但这写起来很别扭;body里面包含了一段空的script;

接下来我讲一下不在body写script,我们到后台注册script;

.net有了几个内置函数解决服务器端向页面注册脚本的问题。

Page.ClientScript.RegisterClientScriptBlock

把脚本注册到页面顶部

Page.ClientScript.RegisterStartupScript

把脚本注册到页面底部

Page.ClientScript.RegisterClientScriptInclude

向页面注册脚本文件

三个函数其中前两个是注册代码就可以了,后一个是脚本文件;他们区别可以分别在后台调用一下看源文件就知道区别了。

如果注册到<form> 头部 ,此时HTML还未加载!
//如果注册js要查找id,js就会报 缺少对象无法起到效果

<body>
<form name="form1" method="post" action="WebForm2.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTIwMzA0OTI0NmRkb5pdNw/Vv10/Q9n9ad/jEwK2+/s=" />
</div>

<script type="text/javascript">
//<![CDATA[
Test('tbAge');//]]>
</script>

<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLXirGLDwKx8PK6AwKKrODaDQKV6deQBQKV6e+nCAlhcbod/3hgbNU1kDPqZcAKQ2gv" />
</div>

<input name="tbName" type="text" value="name" id="tbName" />
<input name="tbAge" type="text" value="age" id="tbAge" />
<input type="submit" name="BtnTest" value="RegisterStartupScript 隐藏age输入框" id="BtnTest" />
<input type="submit" name="BtnTest2" value="RegisterClientScriptBlock 隐藏age输入框" id="BtnTest2" />

</form>


注册脚本最后加载,js可以表单内所有元素。

<body>
<form name="form1" method="post" action="WebForm2.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTIwMzA0OTI0NmRkb5pdNw/Vv10/Q9n9ad/jEwK2+/s=" />
</div>

<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLXirGLDwKx8PK6AwKKrODaDQKV6deQBQKV6e+nCAlhcbod/3hgbNU1kDPqZcAKQ2gv" />
</div>

<input name="tbName" type="text" value="name" id="tbName" />
<input name="tbAge" type="text" value="age" id="tbAge" />
<input type="submit" name="BtnTest" value="RegisterStartupScript 隐藏age输入框" id="BtnTest" />
<input type="submit" name="BtnTest2" value="RegisterClientScriptBlock 隐藏age输入框" id="BtnTest2" />

<script type="text/javascript">
//<![CDATA[
Test('tbAge');//]]>
</script>


注册时脚本文件,需要知道js的路径。

<body>
<form name="form1" method="post" action="WebForm2.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTIwMzA0OTI0NmRkb5pdNw/Vv10/Q9n9ad/jEwK2+/s=" />
</div>

<script src="Test('tbAge');" type="text/javascript"></script>
<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLXirGLDwKx8PK6AwKKrODaDQKV6deQBQKV6e+nCAlhcbod/3hgbNU1kDPqZcAKQ2gv" />
</div>

<input name="tbName" type="text" value="name" id="tbName" />
<input name="tbAge" type="text" value="age" id="tbAge" />
<input type="submit" name="BtnTest" value="RegisterStartupScript 隐藏age输入框" id="BtnTest" />
<input type="submit" name="BtnTest2" value="RegisterClientScriptBlock 隐藏age输入框" id="BtnTest2" />

</form>

</body>


还有更多精彩请参考/article/4780204.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: