js与后台的相互调用
1.js 调用后台的方法
前台
<script language="javascript">
function Test()
{
var strtext="<%=GetText() %>";
Form1.txt1.value=strtext;
}
</script>
后台
protected string GetText()
{
string strText="js 调用后台";
return strText;
}
比较典型的运用就是Repeater的嵌套
比如说产品列表 . 第一个Repeater 肯定是产品类别,里面嵌套一个Repeater 产品详细信息. 但是产品详细信息肯定是按照产品
来绑定的<asp:Repeater ID="rpt2" runat="server" DataSource='<%# GetDateTable(DataBinder.Eval(Container.DataItem, "Pk_Id"))%>'>
前台
public DataTable GetDateTable(object Pk_Id)
{
long Id = long.Parse(Pk_Id.ToString());
ProductInfo_Query query = new ProductInfo_Query();
DataTable dt = query.SelectAll(5, Id);
return dt;
}
顺便比较一下<%=%> <%#%>
<%=%>是在呈现页面的过程中执行的服务器代码,主要是变量的值。
<%#%>可包括变量,表达式,或者调用方法返回的值,但必须的保证这段代码位于
绑定控件的内部,因为只有当绑定控件在执行DataBind()方法时,这里边的代码才会得到执行。
2.后台调用js
response.write 会把js 代码写到<html>标签的外面(它会破坏原来的代码的结构) 所以不能调用已经写好的js 代码
只能在里面写一些简单的js 代码.
如
Response.Write(@"<script language='javascript'>opener.Form1.txtId.value='" +strId+"';</script>");
Response.Write(@"<script language='javascript'>window.close();</script>");
如果是已经封装好的js 建议使用btn1.Attributes.Add("onclick","Test();");
编译成html 代码如下
<input type="submit" name="btn1" value="Button" id="btn1" οnclick="Test();" >
ClientScriptManager.RegisterStartupScript 同理