我在Updatepanel中有一个FileUpload。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<Triggers>
<asp:PostBackTrigger ControlID="SaveButton" />
</Triggers>
<ContentTemplate>
<cc1:TabContainer CssClass="visoft__tab_xpie7" runat="server" ID="tab" ActiveTabIndex="0" Width="100%" Font-Size="11px">
<cc1:TabPanel runat="server" HeaderText="اطلاعات پایه" ID="TabPanel1">
<ContentTemplate>
<div class="row">
<span style="width: 100px" class="rowtitle">تصویر </span>
<asp:FileUpload ID="ImageFileUpload" runat="server"/>
<asp:ImageButton ID="RemoveImageButton" runat="server" ImageUrl="~/images/delete.png" />
</div>
<div class="row">
<span style="width: 100px" class="rowtitle">Category</span>
<asp:DropDownList ID="CategoryDropDownList" runat="server" Width="200px" AutoPostBack="True" DataTextField="Name" DataValueField="ID" OnSelectedIndexChanged="CategoryDropDownList_SelectedIndexChanged" />
<asp:RequiredFieldValidator ID="CategoryRFV" runat="server" ControlToValidate="CategoryDropDownList" ForeColor="Red" ValidationGroup="Save" ErrorMessage="مجموعه را انتخاب کنید." Text="*" />
</div>
<div class="row" style="height: 300px">
<span style="width: 100px" class="rowtitle">توضیحات کامل</span>
<editor:HtmlEditor Style="float: left" runat="server" Width="600px" ID="DescriptionHtmlEditor" />
<asp:RequiredFieldValidator Text="*" ID="DescriptionRFV" runat="server" ControlToValidate="DescriptionHtmlEditor" ForeColor="Red" ValidationGroup="Save" ErrorMessage="توضیحات را وارد کنید ." />
</div>
</ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>
<div class="row" style="text-align: center">
<asp:Button ID="SaveButton" class="button" Width="100px" OnClick="SaveButton_Click" runat="server" ValidationGroup="Save" Text="ذخیره" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
当我在更新面板的部分回发后尝试访问FileUpload FileName属性时,它是空的。
我想在oncange事件中获取uploadpanel的Filenme和javascrip,但我没有得到文件的Fullpath。
function FileChange()
{
var filename = document.getElementById('<%= FileNameUpload.ClientID %>');
var file = document.getElementById('fileupload');
filename.value = file.value;
}
如何在部分回发后获取fileupload的文件名?
答案 0 :(得分:0)
当我尝试访问FileUpload FileName属性后 updatepanel的部分回发,它是空的。
更新面板只是拦截常规表单提交并使用xmlhttp请求执行完整回发。因此,最初在input:file
元素上进行的选择已在初始回发中提交,之后您将无法再阅读。为了证明我在说什么,请尝试在初始回发中阅读文件名,你会发现你将能够。
查看代码,您似乎也尝试以编程方式设置fileupload
元素的值。出于安全原因,这是不可能的 - 您无法从Javascript访问用户的硬盘驱动器并决定用户应将哪个文件上传到您的网站。一旦用户选择了文件并提交了表单,选择就会消失;用户必须自己重新选择文件。
你可以尝试很多黑客来使这个工作与UpdatePanels,但从长远来看,最干净的是使用jQuery Ajax实现这一点,因为你可以完全控制提交的内容和不提交的内容。
我希望这有助于澄清为什么你的方法不起作用。