首页 新闻 搜索 专区 学院

有关Ajax控件中的UpdatePanel

0
悬赏园豆:15 [已解决问题] 解决于 2009-04-29 13:58

比如说我要写注册一个页面,填写信息里面有上传照片的,如果我放一个保存按钮。我想把信息全部填写后,先点击保存按钮把图片保存到指定文件夹,然后点击提交把信息提交到数据库,图片在数据库中保存为保存后的路径,但是如果我先点击保存我填写的信息就会清空,所以我想把img控件、FileUpload控件和保存按钮放在Ajax中那个UpdatePanel控件里面,但这样点击保存按钮执行就不能通过,不知道怎么回事,麻烦那位帮一下忙。下面是我保存按钮的事件代码:

 protected void btnSave_Click(object sender, EventArgs e)
    {
        string fileName = "";
        string road = "";
        string path = "";

        //设置保存图片时的图片名
        fileName = DateTime.Now.ToString("yyMMddtthhmm") + DateTime.Now.Millisecond.ToString();
        //获得扩展名
        string name = fuPhoto.PostedFile.FileName;
        int n = name.IndexOf('.');
        string nam = name.Substring(n, 4);
        string allowName = ".jpg|.jepg|.gif";
        //限制上传格式
        if (allowName.IndexOf(nam.ToLower()) == -1)
        {
            Page.ClientScript.RegisterClientScriptBlock(typeof(string), "Field", "alert('只能上传" + allowName + "等格式的图片!')", true);
            return;
        }
        fileName += nam;
        //获取要保存文件的路径
        road = Server.MapPath("~\\images");

    //拼接要保存的路径
        path = road + "\\" + fileName;
        fuPhoto.PostedFile.SaveAs(path);

        img1.ImageUrl = "images/" + fileName;
}

问题补充: 我知道Asp.Net内置对象在Ajax里会失效,但是我把,road=Server.MapPath("~\\images");这句换为定义一个静态的类私有变量,然后在page_load里面初始化,然后因为是变量,而且是静态的,所以可以在Ajax的控件中使用. 如: private static string RootPath=""; page_load() { RootPath=Server.MapPath("~\\images"); } 然后在保存中,使用RootPath代替Server.MapPath(),仍然不可以。 那位高手指点一下!谢谢了!
微微笑的主页 微微笑 | 初学一级 | 园豆:170
提问于:2009-04-14 19:45
< >
分享
最佳答案
0

FileUpload比较特殊,Ajax是不能直接传递文件的。

Azuresong | 老鸟四级 |园豆:3565 | 2009-04-14 23:38
其他回答(1)
0

ASP.NET AJAX UpdatePanl和FileUpload控件不兼容

jowo | 园豆:2834 (老鸟四级) | 2009-04-14 21:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册