2012年6月18日技术总结(由于初参与工作,很多地方的解决方案仍需完善,记录一些简单的问题)

本文介绍ASP.NET中使用AJAX实现异步请求及文件上传的方法,包括异步验证文本框值、获取LinkButton参数等技巧,并展示了如何在服务器端处理文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

           1.Ajax 请求Ashx处理程序

               思路:原页面利用AJAX将需要处理的数据传值ASHX页面进行处理,将处理结果返回。在原页面显示(防止页面全刷新)

               实例: 异步判断文本框的值不需重复。

              代码:

                  <asp:TextBox ID="txtGrdName" runat="server" onblur="OK()" MaxLength="25"></asp:TextBox>

                   function testReProName() {
                                      var msg = $("#txtGrdName").val().replace(/\s+/g, "");                                                                                  将文本框中的空格用空串代替
                                      if (msg.length == 0) {
                                                 $("#showResult").text("请输入方案名称!");
                                                 return;
                                        }
                                     $("#showResult").empty();
                                     $.ajax({
                                         url: "../../AjaxResult/Program/AjaxProgramTest.ashx?ProgramName=" + encodeURI($("#txtGrdName").val()),     接收处理数值的页面链接                                                                                                                                                                                                                                  encodeURI():编码传汉字时防止乱码
                                                 datatype: "text",
                                                  success: function (res) {                                                                                                                                                 ASHX 传回的值
                                                         if ("该名称已存在!" === res) {
                                                            $("#showResult").text("方案名称重复!");
                                                         }
                                                  }
                                  });

                 }

               ASHX页面的后台代码:

                              context.Response.ContentType = "text/plain";                                                                                                    
                             string strProgramName = context.Request["ProgramName"].ToString();                                           获取请求页面传过来的值
                             context.Response.Write("");                                                                                                                         将需要返回的信息返回

               


              2.点击linkButton在后台获取前台参数

                   应用实例:在Repeater中点击删除按钮,删除对应行的数据。

                   代码:

                      前台:  <asp:LinkButton ID="lbtDel" runat="server" Text="删除" CausesValidation="False" OnClientClick="return confirm('确认删除?');"   点击时调用前台CLICK事件,弹出确认框。

                                             CommandArgument='<%#Eval("cLevelTitleTypeID")%>' OnClick="lbtDel_Click" class=" op-del">   利用CommandArgument将值传到后台
                                    </asp:LinkButton>

                    后台: string strProId = Convert.ToString(((LinkButton)sender).CommandArgument);                                                       //获取前台传过来值



                  3有分页功能时,.跨页获取CHECKBOX

                    思路:用隐藏域保存每页的选中的CHECKBOX。具体不介绍。



                  4.获取Reapeater 中每行的控件的值。

                     实现: foreach (RepeaterItem item in this.rpData.Items)                                                          //遍历Repeater
                                       {
                                            //获得当前Repeater行的CHECKBOX
                                            System.Web.UI.HtmlControls.HtmlInputCheckBox check = (System.Web.UI.HtmlControls.HtmlInputCheckBox)item.FindControl("iCheck");
                                            HiddenField hfProId = (HiddenField)item.FindControl("hfProId");      //获取每行的控件
                                       
                                      }



                  5 文件上传功能

                    思路: 利用服务器端控件

                     前台: <asp:FileUpload ID="iFile" runat="server" />

                    后台: /// <summary>
        /// 用于上传文件
        /// </summary>
        /// <param name="inputFile">上传控件的ID</param>
        /// <returns>上传后的文件名称(不包含路径)</returns>
        private string getUpLaodName(FileUpload fileImg)
        {
            string strNewName = "";
            //检查上传文件不为空
            if (fileImg.PostedFile.ContentLength > 0)    //单位为字节BYTE
            {
                //按日期建立图片文件夹  
                DirectoryInfo dirInfo;
                string strSaveDir = Server.MapPath("/UpLodeFiles/HonorImgFile/");   //自己项目中的目录,适合于小数量的图片
                dirInfo = new DirectoryInfo(strSaveDir);
                if (!dirInfo.Exists)
                {
                    System.IO.Directory.CreateDirectory(strSaveDir);
                    //设定上传文件的保存路径
                    string strName = fileImg.PostedFile.FileName;
                    //取得文件名(抱括路径)里最后一个"."的索引
                    int intExt = strName.LastIndexOf(".");
                    //取得文件扩展名
                    string strExt = strName.Substring(intExt);
                    strNewName = Guid.NewGuid().ToString() + strExt;
                    if (strExt == ".jpg" || strExt == ".jpeg" || strExt == ".gif" || strExt == ".bmp" || strExt == ".png" || strExt == ".JPG" || strExt == ".JPEG" || strExt == ".GIF" || strExt == ".BMP" || strExt == ".PNG")
                    {
                        //保存文件到你所要的目录.
                        //注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里"\"必须用"\\"代替
                        fileImg.PostedFile.SaveAs(Server.MapPath("/UpLodeFiles/HonorImgFile/" + strNewName));
                    }
                    else
                    {
                        this.ShowDialog("警告", "您上传的格式有误!", null);                          
                        return "";
                    }
                }
                else
                {
                    //设定上传文件的保存路径
                    string strName = fileImg.PostedFile.FileName;
                    //取得文件名(抱括路径)里最后一个"."的索引
                    int intExt = strName.LastIndexOf(".");
                    //取得文件扩展名
                    string strExt = strName.Substring(intExt);
                    //这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复
                    DateTime datNow = DateTime.Now;
                    strNewName = Guid.NewGuid().ToString() + strExt;
                    if (strExt == ".jpg" || strExt == ".jpeg" || strExt == ".gif" || strExt == ".bmp" || strExt == ".png" || strExt == ".JPG" || strExt == ".JPEG" || strExt == ".GIF" || strExt == ".BMP" || strExt == ".PNG")
                    {
                        //保存文件到你所要的目录.
                        //注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里"\"必须用"\\"代替
                        fileImg.PostedFile.SaveAs(Server.MapPath("/UpLodeFiles/HonorImgFile/" + strNewName));
                    }
                    else
                    {
                        this.ShowDialog("警告", "您上传的格式有误!", null);  
                        return "";
                    }
                    if (6144 < fileImg.PostedFile.ContentLength)
                    {
                        this.ShowDialog("警告", "上传图片不可以超过6K!", null);
                        return "";
                    }
                }
            }
            return strNewName;

        }   




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值