关于回发后为空的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(); }
按钮单击:
//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是隐藏的div,显示为错误
无法设置文件输入的值.这是一个浏览器安全功能,它与password
字段相同,唯一的区别在于password
您可以使用JavaScript设置值的字段.
但是file
输入时无法设置值.
解决方案是防止回发,用于在回发JavaScript
之前检查值.