ASP.NET学习3.前端和后台的相互调用

1.前端的HTML服务器控件中调用前端的js

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ShowMessageBox._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>MESSAGEBOX</title>

    <script type="text/javascript">

        function test2() {
            alert("这是为什么呢");
        }
    </script>
</head>
<body>
    <button id="button" onclick="test2()">调用js</button>

</body>
</html>

 

2.Web服务器控件调用js函数

这个貌似做不到? Button2调用上面的test2()方法:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>MESSAGEBOX</title>

    <script type="text/javascript">

        function test2() {
            alert("这是为什么呢");
        }
    </script>
</head>
<body>
    <form runat="server" >                   
      <asp:Button ID="Button2" runat="server" Text="调用前端js函数"  OnClick="test2()" ></asp:Button>
    </form>
</body>
</html>

结果:

 test2()是客户端的脚本,并不存在与服务器中,不能被服务器控件调用。

 

3.服务器控件调用后台C#代码(传说中的code-behind技术):

 

Default.aspx的部分代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>MESSAGEBOX</title>

</head>
<body>
    <form runat="server" >          
    <asp:Button id="Button1" runat="server" Text="对话框" onclick="Button1_Click1" ></asp:Button> 

    </form>

</body>
</html>

Default.aspx.cs的部分:

        protected void Button1_Click1(object sender, EventArgs e)
        {
            CallJs();    //这里再去调用前端js
        }

 

4.后台C#代码调用前端中已有的js函数

后台:

        private void CallJs()
        {
            ClientScriptManager cs = Page.ClientScript;
            cs.RegisterStartupScript(this.GetType(), "testPage", "<script>test2()</script>");
        }

前端:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>MESSAGEBOX</title>

    <script type="text/javascript">
        function test2() {
            alert("这是为什么呢");
        }
    </script>
</head>
<body>  
</body>
</html>

适用RegisterStartupScript方法同样可以发送一段js代码:cs.RegisterStartupScript(this.GetType(), "testPage", "<script>alert("这是为什么呢")</script>");

2013年6月13日补充:RegisterStartupScript方法是向页面中注入脚本,并且注册的脚本只有在页面的onload事件触发时才执行。

posted @ 2013-06-09 09:33  spuerdaddy  阅读(684)  评论(0编辑  收藏  举报