我设法回答了自己,但同样的功能还有另外一个问题。由于某种原因,发布文件的保存事件的第一次回发命中Ol'对象未设置为对象错误的实例,但是第二次尝试上载文件并触发我的保存事件(转换为byte []存储为SQL Server BLOB)它确实应该做的一切。
有一个很好的建议使用AJAX AsyncUpload控件,但我坚信要消除原因而不是解决问题。我将继续沿着这条路走下去,以便最好地了解asp.net等。
你们中间会有一个wizrd可以帮助我找出为什么我在第一次回发时得到“对象引用没有设置为obj的错误”错误但是第二次它工作正常。内容页面有一个母版页,它在更新面板中包装内容页面。不是我决定这样做的。还有一个更新面板,其中包含针对我的保存事件的回发触发器。
你有什么想法?
答案 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");