FileUpload empty after PostBack

匿名 (未验证) 提交于 2019-12-03 10:10:24

问题:

I have a problem regarding a ASP.NET fileuploader that is empty after postback. I have one fileupload control, one textbox control and one button control.

When I click the button, it checks if the textbox is populated, if it is it performs actions, if its not then it shows an error message and stay on the page. However, when I press the button and the textbox is empty, the button postsback and the fileuploader is empty and the user has to select the file again. So: User selects file > The file is located in the fileuploader > the user presses the button > the error message pops up > the fileuploader loses the file after postback.

When the user selected a file but not yet clicked the button (koala.jpg)

When the button is pressed, the file is gone (no file selected)

How do I keep a file in the fileuploader after a postback or maybe tell the button not to post back if the textbox is empty?

EDIT:

Be aware that I simplified the question and that the content of the first post are just made up to make my question more clear.

Page load:

    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();        } 

Button Click:

//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 

errorSubject & errorContent are hidden divs that show up as the error

回答1:

It's not possible to set the value of a file input. This is a browser security feature, it's the same with a password field, the only difference is with a password field you can set the value using JavaScript.

However with the file input you cannot set the value.

The solution is to prevent the postback, use JavaScript to check the value before posting back.



回答2:

As Phill pointed out you cannot update this Control at all from the code behind or from repopulating from the Form Values.

If you are relying on an auto postback to change data somewhere else on the form, you will need to handle the initial FileUpload and create a fake placeholder that indicates the file name that was/is to be uploaded.

The easier solution might be to wrap the other controls that require the AutoPostBack in a UpdatePanel so that they can be post back independent of the File Upload control.



回答3:

if(!IsPostback) {   } 

use this code



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!