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

dot*_*ewb 5 c# asp.net postback file-upload asyncpostbackerror

我的问题

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

同样的问题在这里

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

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

你有什么想法?

Kev*_*ain 13

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

建议的解决方法是使用CSS可见性,所以使用它可以使其不可见 -

<asp:Panel ID="pnlUpload" runat="server" class="workerDetailsPanelLeft" style="display:none">
Run Code Online (Sandbox Code Playgroud)

从线程的解释是

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

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

<form id="form1" enctype="multipart/form-data" runat="server">
Run Code Online (Sandbox Code Playgroud)

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


Muh*_*edh 5

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

Page.Form.Attributes.Add("enctype", "multipart/form-data");
Run Code Online (Sandbox Code Playgroud)