none
【ASP.NET】回调函数如何才能获取上传控件中的对象? RRS feed

  • 问题

  • 我在使用回调函数的时候无法获取上传控件中的对象,提示错误未将对象引用到实例

     

    后台代码:

        //定义Result变量用于存储回调的返回值
        private string Result;


        Application app = new Application();
        protected int i = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            /**
               * Page的ClientScript属性可返回System.Web.UI.ClientScriptManager对象
               * 调用ClientScriptManager对象的GetCallbackEventReference方法可获取浏览器端的脚本函数的引用
               * GetCallbackEventReference方法有多个重载版本,这里使用了4个参数
               * 4个参数分别为指定控件(页面对象)、浏览器端发送的参数(arg变量) 、
               * 浏览器端接收结果的函数名称(ReceiveServerData)以及上下文(这里为空)
               * 然后将引用(string类型)赋值给BRef变量
            **/

            string BRef = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "null");
            //将javascript函数声明赋值给BScript,BRef即为UseCallback函数的函数体
            //UseCallback函数是浏览器端函数,接收1个参数
            string BScript = "function   UseCallback(arg) " +
                  "{ " + BRef + "; " + "} ";
            //调用ClientScriptManager对象的RegisterClientScriptBlock方法将UseCallback函数注册到页面对象客户端脚本中
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
                  "UseCallback ", BScript, true);

        }


        //该方法是回调执行的方法,根据参数在这个方法中处理回调的内容
        public void RaiseCallbackEvent(string arg)
        {
           

            //HttpPostedFile file = HttpContext.Current.Request.Files["file1"];  //问题出在这里,总是获取不到上传控件对象

            string u=this.file.PostedFile.FileName;  //这里也是如此
            Result = "asdf";


        }


         //该方法是返回回调的结果给客户端
            public string GetCallbackResult()
            {
                //返回Result到指定的客户端函数中
                return Result;
               
            }

     

    前台代码:

      //接收回调服务器端传过来的结果数据(即服务器端的Result变量值),该函数名为GetCallbackEventReference()的第3个参数
            function ReceiveServerData(result)
            {

                 alert(result);
            }

    function  CallBack()
            {

                 UseCallback();//回调函数
            }

     

    <input type="file" id="file" name="file" runat="server" onchange="CallBack()" />

    请问高手我应该如何获取页面上传对象,访问其中的上传数据呢?万分感谢!


    买海参选煜诚 煜诚海参 真心品质 http://jinweb.taobao.com
    • 已移动 孟宪会Moderator 2010年10月26日 12:36 (发件人:.NET Framework 一般性问题讨论区)
    2010年10月26日 9:19

答案

  • 你好:

    不知道你这样做的目的是什么,实际上你可以使用jquery的form插件来ajax提交文件的上传,同时可以将成功上传的消息返回到客户端。


    I am here!
    你好,据我所知,ajax是无法获取上传控件对象大小的,不知道还有没有其他办法?但我知道可以使用flash插件进行出来

     

    回调和ajax都是无法获取上传空间对象的。具体解决思路 http://hi.baidu.com/jinwb/blog/item/521de7cdbe265f5e0eb345c2.html

     

    买海参选煜诚 煜诚海参 真心品质 http://jinweb.taobao.com

    • 已标记为答案 jinwb1982 2010年11月26日 6:27
    2010年11月2日 3:37

全部回复

  • 你好:

    不知道你这样做的目的是什么,实际上你可以使用jquery的form插件来ajax提交文件的上传,同时可以将成功上传的消息返回到客户端。


    I am here!
    2010年10月28日 2:53
    版主
  • 你好:

    不知道你这样做的目的是什么,实际上你可以使用jquery的form插件来ajax提交文件的上传,同时可以将成功上传的消息返回到客户端。


    I am here!
    你好,据我所知,ajax是无法获取上传控件对象大小的,不知道还有没有其他办法?但我知道可以使用flash插件进行出来

     

    回调和ajax都是无法获取上传空间对象的。具体解决思路 http://hi.baidu.com/jinwb/blog/item/521de7cdbe265f5e0eb345c2.html

     

    买海参选煜诚 煜诚海参 真心品质 http://jinweb.taobao.com

    • 已标记为答案 jinwb1982 2010年11月26日 6:27
    2010年11月2日 3:37