我在工作中遇到了一些问题,就是在html文件调用javascript好用,可是用.net 调用JS就不好用,找了很多资料,但是还不好用。现在求大家有没有什么好的文章或好的书介绍一下,让我好好学习一下.net对JS的操作。谢谢大家了。
还有我感觉.net对Js的操作有一定困难也许我的技术还不有到家,希望大家发表一下自己的看法和相关的书籍或文章,谢谢大家。

解决方案 »

  1.   

    <html>
      <head>
        <script language="C#" runat="server">
          public void Page_Load(Object sender, EventArgs e)
          {        if (!this.IsStartupScriptRegistered("Startup"))
            {
              // Form the script to be registered at client side.
              String scriptString = "<script language=JavaScript> function DoClick() {";
              scriptString += "showMessage2.innerHTML='<h4>Welcome to Microsoft .NET!</h4>'}";
              scriptString += "function Page_Load(){ showMessage1.innerHTML=";
              scriptString += "'<h4>RegisterStartupScript Example</h4>'}<";
              scriptString += "/";
              scriptString += "script>";
              this.RegisterStartupScript("Startup", scriptString);
            }
          }
         </script>
      </head>
      <body topmargin="20" leftmargin="10" onload="Page_Load()">
         <form id="myForm" runat="server">
            <span id="showMessage1"></span>
            <br>
            <input type="button" value="ClickMe" onclick="DoClick()">
            <br>
            <span id="showMessage2"></span>
         </form>
      </body>
    </html>
      

  2.   

    假如有很多的JS代码或调用JS文件那可麻烦了。
      

  3.   

    ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('" + this.msg + "');window.close();</script>");
      

  4.   

    这方面好像没有相关的书,因为这只是一个点。
    2楼和3楼基本就是我们动态加载js的方法,你可以是一段段脚本和可以引用js路径。
      

  5.   

    不会啊,
    clientscript或scriptmanager里面有一些方法对操纵js提供了方便
      

  6.   

    还有需要注意的是UpdatePanel内异步刷新的内容含有JavaSript时,这段JavaScript代码是无法被绘制到网页内。如<script>...</sript>和<script src...></sript>这样的。
    就像UpdatePanle内动态加载User Control, User Control自己又有些上面这样的JavaScript代码段时, 这些JavaScript是不会被绘制到UpdatePanel内的。如果一开始User Control就呆在UpdatePanel内倒是没问题。
      

  7.   

    举个例子:一个WebUserControl.ascx的用户控件内有<script.../>段.<script type="text/javascript">
        function showMsg(msg) {
            alert(msg);
        }
    </script>
    <asp:Button ID="Button1" runat="server" Text="用户控件内的" OnClientClick="showMsg(this.value);" />
    Default.aspx内有个UpdatePanel,里面有个Button,点击后动态加载这个用户控件到UpdatePanel内, 但这时你会发现用户控件内的JavaScript不听话了.
    //Default.aspx<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Button ID="Button1" runat="server" Text="UpdatePanle内的" 
                        onclick="Button1_Click" />
                </ContentTemplate>
                
            </asp:UpdatePanel>
    </div>
    //Default.aspx.cs
    protected void Button1_Click(object sender, EventArgs e)
    {
            if (UpdatePanel1.ContentTemplateContainer.FindControl("UserCtrlID") == null)
            {
                Control ctrl = Page.LoadControl("WebUserControl.ascx");
                ctrl.ID = "UserCtrlID";
                UpdatePanel1.ContentTemplateContainer.Controls.Add(ctrl);
            }
    }WHY? 如果这个用户控件不是动态加载时没问题. WHY?
      

  8.   

    这个方法我已经试过了,但是没有用,总是出现一些错误,我感觉问题总是出现在.net 对JS操作上,也许我还不太明白其中的操作!
      

  9.   


    我用的不是AJAX我用的是普通的JS!我感觉AJAX 还是有一些不如意思的方法,比如他的刷新技术,只是在服务器端进行没有更新的设置操作,实际他还是更新了整个页面,不但没有带来速度的提高,而且还加重了服务器端的负担。
      

  10.   


    其实没有什么“.net调用javascript”,它们是“阴阳两界”,当浏览器提交http请求到服务器端,服务器端执行.net程序,然后当服务器端处理完、已经释放(杀死)了页面对象,html才达到遥远的客户端浏览器上,客户端浏览器上于是在下载html的时候执行内部的javascript代码。asp.net顶多能做的只是输出一些javascript,嵌入html。既然你在这些个功能的地方需要手动生成javascript,那么毫无疑问地,你应该以学会javascript为asp.net开发的基础。不熟悉javascript(以及操纵dhtml对象的属性和事件)就等于不熟悉asp.net开发。我从来不说“asp.net调用javascript”,这很含混空洞得容易让初学者误以为是什么灵丹妙药。asp.net没有本事调用javascript,我们只有根据那个简单的http通讯时序的原理,知道asp.net只能输出html+javascript到客户端。要想写出很好的web界面交互设计,你就只有了解javascript编程技术本身。
      

  11.   


    也就说在.net 运行完之后就封杀一切页面代码,不在让其它的代码执行对吗??
    想要运行JavaScript 必须在页面开始的时候就写入JS代码。那“我从来不说“asp.net调用javascript”,这很含混空洞得容易让初学者误以为是什么灵丹妙药。”
    这是什么意思啊!我有点晕。麻烦您在解释一下!
      

  12.   

    Asp.net调用javascript, 如果从字面上看应该是在服务器端运行的着的asp.net可以调用javascript方法。这样才叫调用吗,不是吗?但你能想像一个支持几千用户的asp.net应用程序在运行过程中在调用某个客户端的javascript function这种事吗?调用谁的呀?怎么调啊?所以说sp1234有那么一说。虽然我们都明白其实是说什么。如果说javascript调用asp.net,这还有那么点靠谱。比如asp.net ajax client library已经集成了很多访问asp.net页面静态方法,web service,authentication service, profile service的方法。一个理想的状态是客户端javascript+css负责页面的修饰,表现。asp.net应用只负责从数据层获得数据并进行处理,把处理后的数据返回给客户端(注意:只传送数据,而不是每次都是<html>.....)。这就是很多ajax客户端框架出现的目的,asp.net ajax有UpdatePanel,但同样也有另一套client library. 所以,不要对asp.net ajax太有偏见。它不是那个拖拽到UpdatePanel内那么简单。注意它的client library.
      

  13.   

    这个世界上有一种参考资料叫做 MSDN,lz 难道是外星人么?!
      

  14.   

    出错的原因是你应该没清楚asp.net的生命周期
      

  15.   


      /// <summary>
      /// 脚本宿主基类
      /// </summary>
      public class ScriptHost
        :
        //IOleServiceProvider,
        IActiveScriptSite,
        IActiveScriptSiteWindow
      {
    我写了个 js 引擎的宿主, 在 winform 程序里用 js 作脚本用微软 js 引擎需要一个宿主, 就是实现 IActiveScriptSite 的, IE 就是一个 js 宿主
    IE 这个宿主向脚本暴露了 DOM , BOM 对象模型, 并且提供了象 alert 这样的便利函数,使得可以用 js 可以操作 html 等.js 不止是用于浏览器和网页的.
      

  16.   

    d
    我前两天回家了,今天才回来!
    我的想法是只要是谁激发这个事件就调用哪个客户端程序不可以吗?
    还有对AJAX访问静态ASPX页还有一些不太了解。