我在前台页面上写了一段js代码想调用后台写的方法,但却没有执行,大家看下我写的对吗?我在后台的方法设置了断点,当我点击按钮以后弹出对话框“zhe”,但没有进入断点,也没有返回值
前台:
<script type="text/javascript">
function filename()
{
   var a = "zhe<%=GetFileName()%>";   
   alert(a);   }
</script><input id="Button1" type="button" value="JS按钮" onclick="filename();"/>后台:
public string GetFileName()
        {
            string fileName;
            fileName = this.FileUpload1.FileName;
            return fileName;
        }

解决方案 »

  1.   

    1、函数声明为public
      后台代码(把public改成protected也可以)
       public string ss() 
      { 
         return("a"); 
      }2、在html里用可以调用前台脚本<script language=javascript>   var a = "<%=ss()%>";   alert(a); </script>
      

  2.   

    fileName = this.FileUpload1.FileName;
    return fileName; 是否为空
      

  3.   

    这样不行  要用AJAX因为你点击这个JS按钮时页面已经载入完成了
      

  4.   

    <script type="text/javascript">
            function test(v) {
                alert(v);
            }
        </script>
    ...
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" onchange="test(this.value);" />
    </div>
      

  5.   

    <%=GetFileName()%>"  这中是在加载时,绑定的, 
    点击时 已经从后台获取值了,不会再获取,  
      

  6.   

    哇!我实际的想法被你一眼看出了,不过有办法怎么通过js直接获取上传的文件名和文件大小吗?如果我每次通过服务器端按钮实现的话,每次页面都会刷新一次,导致FileUpload 中设置的路径就清空了
      

  7.   

    可以用 html 控件 <input id="File1" type="file" />
      

  8.   

    再看了一下你,this.FileUpload1.FileName; 这个是本页面的控件,加载的时候没有值。
    所以你弹出的是zhe+"".
    如果你是想得到文件名,不需要再访问服务器,直接在客户端用js。6楼的就可以得到
      

  9.   


    你打开页面加载的时候这个控件的FileName应该没有值,除非你通过编程方式给它赋值。你这个<%=GetFileName()%>是在打开页面加载的时候就执行了,你在客户端点击的时候,它已经变成一个字符串了,这个字符串也许就是空的。
      

  10.   

     //异步调用后台方法
      类名.方法导入Ajax.dll
    //注册后台类
      Ajax.Utility.RegisterTypeForAjax(typeof(myajaxdll)); //设置方法可以在客户端调用
        [Ajax.AjaxMethod()]下面是后台方法