PostBack后FileUpload为空

Nie*_*man 2 c# asp.net file-upload

关于回发后为空的ASP.NET文件上载器,我遇到了问题.我有一个文件上传控件,一个文本框控件和一个按钮控件.

当我单击该按钮时,它会检查文本框是否已填充,是否执行操作,如果不是则显示错误消息并保留在页面上.但是,当我按下按钮并且文本框为空时,按钮回发并且fileuploader为空,用户必须再次选择该文件.所以:用户选择文件>文件位于fileuploader>用户按下按钮>弹出错误信息>文件上传器在回发后丢失文件.

当用户选择文件但尚未点击按钮时(koala.jpg) 在此输入图像描述

按下按钮时,文件消失(未选择文件)
在此输入图像描述

如何在回发后将文件保留在fileuploader中,或者如果文本框为空,可以告诉按钮不回发?

编辑:

请注意,我简化了问题,并且第一篇文章的内容只是为了使我的问题更加清晰.

页面加载:

    protected void Page_Load(object sender, EventArgs e)
    {
        //First check if User is logged in 
        if (Session["User"] == null)
        {
            Response.Redirect(GetRouteUrl("Login", null));
        }

        TicketsBLL objTicketsBll = new TicketsBLL();


        var cat = objTicketsBll.getAllCategories();

        ddlCategory.DataTextField = "name";
        ddlCategory.DataValueField = "id";
        ddlCategory.DataSource = cat;
        ddlCategory.DataBind();



    }
Run Code Online (Sandbox Code Playgroud)

按钮单击:

//check if everthing is filled :
        errorContent.Visible = false;
        errorSubject.Visible = false;

        if (txtSubject.Text == "" || txtSubject.Text == null || txtContent.Text == null || txtContent.Text == "")
        {
            if (txtSubject.Text == "" || txtSubject.Text == null)
            {
                errorSubject.Visible = true;
            }
            if(txtContent.Text == null || txtContent.Text == ""){
                errorContent.Visible = true;
            }
        }

        else { //Do something after this
Run Code Online (Sandbox Code Playgroud)

errorSubject&errorContent是隐藏的div,显示为错误

Phi*_*ill 10

无法设置文件输入的值.这是一个浏览器安全功能,它与password字段相同,唯一的区别在于password您可以使用JavaScript设置值的字段.

但是file输入时无法设置值.

解决方案是防止回发,用于在回发JavaScript之前检查值.