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


    服务器调用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> 


    还有更多精彩请参考http://www.cnblogs.com/dolphinX/p/3335610.html

  • 相关阅读:
    CentOS下Docker与.netcore(五)之 三剑客之一Docker-swarm集群
    Dockerfile 解析--文件结构
    秒懂JWT
    智能爬虫框架
    Docker 学习笔记-数据管理
    枚举器与迭代器
    Entity Framework 并发冲突解决方案
    Entity Framework Core 简介
    Try 和异常
    Nginx反向代理实现docker容器域名解析
  • 原文地址:https://www.cnblogs.com/lijnlong/p/3336291.html
Copyright © 2020-2023  润新知