我设法回答了自己,但是同一套功能还有另一个问题。由于某种原因,已发布文件的保存事件的第一次回发命中了 Ol' Object not set to an instance of an object 错误,但是在第二次尝试上传文件并触发我的保存事件(转换为 byte[] 和存储为 SQL Server BLOB)它做所有应该做的事情。
有一个使用 AJAX AsyncUpload 控件的好建议,但我坚信要消除原因而不是解决问题。我将继续沿着这条路走下去,以最好地理解 asp.net 等
你们中间有没有一个向导可以帮助我确定为什么我在第一次回发时出现“object ref not set to inst of obj”错误,但在第二次回发时它工作正常。内容页面有一个母版页,它将内容页面包装在更新面板中。不是我决定这样做。还有一个更新面板,其中包含针对我的保存事件的回发触发器。
大家有什么想法?
问题(如此处所示http://forums.asp.net/t/1060363.aspx)似乎是当您在周围面板上使用可见性属性时(因为您似乎来自链接问题)。
建议的解决方法是使用 CSS visibility 代替,因此使用它使其不可见 -
<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">
我认为其中任何一个都可以解决您的问题。
您可以通过 Page_Load 事件上的代码做同样的事情。输入此代码,它将解决问题。
Page.Form.Attributes.Add("enctype", "multipart/form-data");
感谢 Muhammedh Page.Form.Attributes.Add("enctype", "multipart/form-data"); 解决了我的问题。