FileUpload控件在第二次单击时工作但不首先尝试保存已发布的文件?

时间:2012-07-20 08:33:59

标签: c# asp.net file-upload postback asyncpostbackerror

My Question

我设法回答了自己,但同样的功能还有另外一个问题。由于某种原因,发布文件的保存事件的第一次回发命中Ol'对象未设置为对象错误的实例,但是第二次尝试上载文件并触发我的保存事件(转换为byte []存储为SQL Server BLOB)它确实应该做的一切。

Same problem here

有一个很好的建议使用AJAX AsyncUpload控件,但我坚信要消除原因而不是解决问题。我将继续沿着这条路走下去,以便最好地了解asp.net等。

你们中间会有一个wizrd可以帮助我找出为什么我在第一次回发时得到“对象引用没有设置为obj的错误”错误但是第二次它工作正常。内容页面有一个母版页,它在更新面板中包装内容页面。不是我决定这样做的。还有一个更新面板,其中包含针对我的保存事件的回发触发器。

你有什么想法?

2 个答案:

答案 0 :(得分:13)

问题(如http://forums.asp.net/t/1060363.aspx所示)似乎是在周围面板上使用visibility属性时(因为它似乎来自链接的问题)。

建议的解决方法是使用CSS可见性,因此请使用此方法使其不可见 -

<asp:Panel ID="pnlUpload" runat="server" class="workerDetailsPanelLeft" style="display:none">

线程中对此的解释是

  

如果您的容器设置为不可见,则上传控件实际上不会呈现为HTML,导致表单的enctype不能设置为enctype =“multipart / form-data”,导致文件上传控件不发布所选内容归档到服务器。解决方法是确保将FileUpload控件呈现为HTML(通过将其样式设置为display:none而不是Visible = false),或者通过手动设置enctype

因此,另一种解决方法是将表单标记更改为此

<form id="form1" enctype="multipart/form-data" runat="server">

我认为其中任何一个都可以解决你的问题。

答案 1 :(得分:5)

您可以通过Page_Load事件上的代码执行相同的操作。输入此代码,它将解决问题。

Page.Form.Attributes.Add("enctype", "multipart/form-data");