对于客户端事件比较复杂,首先介绍一下客户端的脚本:
首先我在客户端声名一个KSS_Upload类的定义,它主要帮助我来实现客户端的验证








论Web控件开发 - 完美上传下载控件“新”(四)function KSS_Upload(id, extFilter, path)
{
论Web控件开发 - 完美上传下载控件“新”(四)    //对象ID
论Web控件开发 - 完美上传下载控件“新”(四)
    this.ID = id;
论Web控件开发 - 完美上传下载控件“新”(四)    
//上传文件路径
论Web控件开发 - 完美上传下载控件“新”(四)
    this.Path = (!path)?'':path;
论Web控件开发 - 完美上传下载控件“新”(四)    
//扩展名验证对象
论Web控件开发 - 完美上传下载控件“新”(四)
    this.ExtFilter = extFilter;
论Web控件开发 - 完美上传下载控件“新”(四)    
//当点击上传按钮时客户端验证函数
论Web控件开发 - 完美上传下载控件“新”(四)
    this.CheckUpload = function()
{
论Web控件开发 - 完美上传下载控件“新”(四)        
//this.ID + "__file"为htmlfileupload控件id
论Web控件开发 - 完美上传下载控件“新”(四)
        var fileName = document.getElementById(this.ID + "__file").value;
论Web控件开发 - 完美上传下载控件“新”(四)        
//验证fileupload中的文件名是否合法
论Web控件开发 - 完美上传下载控件“新”(四)
        if (!((fileName)&&(fileName!='')&&(fileName.match(/^([A-Za-z]:\\(.)+\\[^\\]+)$/))))
{
论Web控件开发 - 完美上传下载控件“新”(四)            alert(
"文件名称格式有误!");
论Web控件开发 - 完美上传下载控件“新”(四)            
return false;
论Web控件开发 - 完美上传下载控件“新”(四)        }

论Web控件开发 - 完美上传下载控件“新”(四)        
//是否对扩展名要求验证
论Web控件开发 - 完美上传下载控件“新”(四)
        if(!this.ExtFilter) return true;
论Web控件开发 - 完美上传下载控件“新”(四)        
if(!fileName.match(this.ExtFilter))
{
论Web控件开发 - 完美上传下载控件“新”(四)            alert(
"文件种类不支持!");
论Web控件开发 - 完美上传下载控件“新”(四)            
return false;
论Web控件开发 - 完美上传下载控件“新”(四)        }

论Web控件开发 - 完美上传下载控件“新”(四)        
return true;
论Web控件开发 - 完美上传下载控件“新”(四)    }

论Web控件开发 - 完美上传下载控件“新”(四)    
//当点击删除按钮时客户端验证函数
论Web控件开发 - 完美上传下载控件“新”(四)
    this.CheckDelete = function()
{
论Web控件开发 - 完美上传下载控件“新”(四)        
//this.ID同时为inputhidden控件的id
论Web控件开发 - 完美上传下载控件“新”(四)
        var txtFileName = document.getElementById(this.ID);
论Web控件开发 - 完美上传下载控件“新”(四)        var fileName 
= txtFileName.value;
论Web控件开发 - 完美上传下载控件“新”(四)        
//是否有删除的文件
论Web控件开发 - 完美上传下载控件“新”(四)
        if (!(fileName&&(fileName!='')))
{
论Web控件开发 - 完美上传下载控件“新”(四)            alert(
"文件名称格式有误!");
论Web控件开发 - 完美上传下载控件“新”(四)            
return false;
论Web控件开发 - 完美上传下载控件“新”(四)        }

论Web控件开发 - 完美上传下载控件“新”(四)        
return true;
论Web控件开发 - 完美上传下载控件“新”(四)    }

论Web控件开发 - 完美上传下载控件“新”(四)    
//当下载时客户端验证函数
论Web控件开发 - 完美上传下载控件“新”(四)
    this.CheckDownload = function(obj)
{    
论Web控件开发 - 完美上传下载控件“新”(四)        
//this.ID同时为inputhidden控件的id
论Web控件开发 - 完美上传下载控件“新”(四)

论Web控件开发 - 完美上传下载控件“新”(四)        var txtFileName 
= document.getElementById(this.ID);
论Web控件开发 - 完美上传下载控件“新”(四)        var fileName 
= txtFileName.value;
论Web控件开发 - 完美上传下载控件“新”(四)        var fullFileName 
= this.Path + fileName;
论Web控件开发 - 完美上传下载控件“新”(四)        
//是否有可下载的文件
论Web控件开发 - 完美上传下载控件“新”(四)
        if (!(fileName&&(fileName!='')))
{
论Web控件开发 - 完美上传下载控件“新”(四)            alert(
"文件名称格式有误!");
论Web控件开发 - 完美上传下载控件“新”(四)            
return false;
论Web控件开发 - 完美上传下载控件“新”(四)        }

论Web控件开发 - 完美上传下载控件“新”(四)        obj.href 
= fullFileName;
论Web控件开发 - 完美上传下载控件“新”(四)        
return true;
论Web控件开发 - 完美上传下载控件“新”(四)    }

论Web控件开发 - 完美上传下载控件“新”(四)}

而当控件在生成期间通过以下代码实现,客户端upload对象的声明,其中参数{0}为控件的ID,{1}为扩展名验证器,{2}为上传文件的路径.

论Web控件开发 - 完美上传下载控件“新”(四)
论Web控件开发 - 完美上传下载控件“新”(四)
<SCRIPT language="JavaScript">
论Web控件开发 - 完美上传下载控件“新”(四)    
var {0}_obj = new KSS_Upload("{0}", {1}, "{2}");
论Web控件开发 - 完美上传下载控件“新”(四)
</SCRIPT>
论Web控件开发 - 完美上传下载控件“新”(四)

以下是服务器端客户事件相关代码
论Web控件开发 - 完美上传下载控件“新”(四) //获得后缀名验证器字符串
论Web控件开发 - 完美上传下载控件“新”(四)
  protected virtual string GetExtValidateStr()
{
论Web控件开发 - 完美上传下载控件“新”(四)   
if(this.ExtFilters.Count > 0)
{
论Web控件开发 - 完美上传下载控件“新”(四)    System.Text.StringBuilder st 
= new System.Text.StringBuilder();
论Web控件开发 - 完美上传下载控件“新”(四)    st.Append(
"/(");
论Web控件开发 - 完美上传下载控件“新”(四)    
for(int i = 0; i<ExtFilters.Count;i++)
{
论Web控件开发 - 完美上传下载控件“新”(四)     
if(i != 0)
论Web控件开发 - 完美上传下载控件“新”(四)      st.Append(
"|");
论Web控件开发 - 完美上传下载控件“新”(四)     st.AppendFormat(
"(\\{0})",this.ExtFilters[i].Text.ToLower());
论Web控件开发 - 完美上传下载控件“新”(四)    }

论Web控件开发 - 完美上传下载控件“新”(四)    st.Append(
")$/");
论Web控件开发 - 完美上传下载控件“新”(四)    
return st.ToString();
论Web控件开发 - 完美上传下载控件“新”(四)   }

论Web控件开发 - 完美上传下载控件“新”(四)   
else
论Web控件开发 - 完美上传下载控件“新”(四)    
return "null";
论Web控件开发 - 完美上传下载控件“新”(四)  
论Web控件开发 - 完美上传下载控件“新”(四)  }


论Web控件开发 - 完美上传下载控件“新”(四)
//获取前面的jscript角本字符串
论Web控件开发 - 完美上传下载控件“新”(四)
  protected static string _webUploadScript;
论Web控件开发 - 完美上传下载控件“新”(四)  
protected static string _declareWebUploadScript;
论Web控件开发 - 完美上传下载控件“新”(四)  
static Upload()
{
论Web控件开发 - 完美上传下载控件“新”(四)   System.Reflection.Assembly assembly 
= System.Reflection.Assembly.GetExecutingAssembly();
论Web控件开发 - 完美上传下载控件“新”(四)   
if(assembly != null)
{
论Web控件开发 - 完美上传下载控件“新”(四)    System.IO.StreamReader reader 
= new System.IO.StreamReader(assembly.GetManifestResourceStream("Keyss.WebControls.WebUpload.upload.js"));
论Web控件开发 - 完美上传下载控件“新”(四)    Upload._webUploadScript 
= reader.ReadToEnd();
论Web控件开发 - 完美上传下载控件“新”(四)    reader.Close();
论Web控件开发 - 完美上传下载控件“新”(四)    reader 
= new System.IO.StreamReader(assembly.GetManifestResourceStream("Keyss.WebControls.WebUpload.startup.js"));
论Web控件开发 - 完美上传下载控件“新”(四)    Upload._declareWebUploadScript 
= reader.ReadToEnd();
论Web控件开发 - 完美上传下载控件“新”(四)    reader.Close();
论Web控件开发 - 完美上传下载控件“新”(四)   }
 
论Web控件开发 - 完美上传下载控件“新”(四)  }

论Web控件开发 - 完美上传下载控件“新”(四)  
#endregion
论Web控件开发 - 完美上传下载控件“新”(四)  
protected override void OnPreRender(EventArgs e)

论Web控件开发 - 完美上传下载控件“新”(四)
//注册KSS_Upload类
论Web控件开发 - 完美上传下载控件“新”(四)
   if(!Page.IsClientScriptBlockRegistered("Keyss.WebControls.Upload"))
{
论Web控件开发 - 完美上传下载控件“新”(四)    Page.RegisterClientScriptBlock(
"Keyss.WebControls.Upload",Upload._webUploadScript);
论Web控件开发 - 完美上传下载控件“新”(四)   }

论Web控件开发 - 完美上传下载控件“新”(四)
//声明客户端jscript upload_obj对象
论Web控件开发 - 完美上传下载控件“新”(四)
   if(!Page.IsStartupScriptRegistered(this.ClientID))
{
论Web控件开发 - 完美上传下载控件“新”(四)    
string tmpStr = this.GetExtValidateStr();
论Web控件开发 - 完美上传下载控件“新”(四)    
论Web控件开发 - 完美上传下载控件“新”(四)    Page.RegisterStartupScript(ClientID,
string.Format(Upload._declareWebUploadScript,ClientID,tmpStr,this.FilePath));
论Web控件开发 - 完美上传下载控件“新”(四)   }

论Web控件开发 - 完美上传下载控件“新”(四)  }

论Web控件开发 - 完美上传下载控件“新”(四)
 

相关文章:

  • 2022-01-17
  • 2021-12-10
  • 2022-01-17
  • 2021-03-31
  • 2022-01-15
  • 2021-09-04
  • 2021-10-28
猜你喜欢
  • 2021-09-28
  • 2021-05-31
  • 2021-11-06
  • 2021-07-11
  • 2021-07-25
  • 2021-10-29
  • 2022-12-23
相关资源
相似解决方案