进行服务器端验证,而不会丢失回发数据

时间:2011-08-16 17:29:38

标签: c# jquery asp.net validation file-upload

我想知道哪种方法最好:我有一个使用ASP的表单,首先在客户端上使用jQuery进行验证。在这个表单中,我有一个FileUpload控件来上传Excel文件,并且正在服务器端上验证此控件,以检查文件类型,有效数据,有效结构等...我真的需要让服务器端的文件验证尽可能安全,我不想使用ActiveX。

问题在于,当服务器端验证返回错误时,由于回发,表单中先前插入的数据将丢失。

有没有办法进行客户端验证,然后在完成此操作后,进行服务器端验证并在回发时不丢失已发送的数据?

5 个答案:

答案 0 :(得分:3)

我认为最好的方法是在Page_Load中获取旧的字段值。 您只需检查页面是否回发。

     if (Page.IsPostBack)
    {
        YourTextBox.Attributes.Add("Value", YourTextBox.Text);
    }

希望这对你有所帮助。

答案 1 :(得分:1)

尝试向您的表单添加一个CustomValidator,它将调用FileUpload.SaveAs()方法并验证上传的文件。

例如:

protected void ValidateCstm_ServerValidate(object source, ServerValidateEventArgs args)
{

    //Upload the file
    fileUpload1.SaveAs(....
    .....
    .....

    //Validate the fileUpload
    .....

    //If the fileUpload is invalid
    args.IsValid = false;

}

我希望这会有所帮助。

答案 2 :(得分:0)

您是否考虑过使用AJAX进行文件验证,从而避免完全回复邮件?有几个基于AJAX的文件上传小部件“可用于你的目的......”

答案 3 :(得分:0)

当您在服务器端遇到任何错误时,将所有表单发布数据设置在某个会话变量中并重定向到表单并显示填充此会话数据的表单。

答案 4 :(得分:0)

或者,您可以使用jQuery File Upload组件。它不需要回发。它需要服务器来处理HTTP GET,POST和DELETE并返回JSON。您可以使用ASHX。这样,您的服务器端验证不会干扰回发。