C# 在不使用UpdatePanel的情况下单击RadioButtonList时,如何停止页面重新加载?
我在我的网页中使用RadioButtonList,其中RadioButtonList项目为a和B。单击项目B时,我显示了几个带有FileUploadControl的图像框,并将它们添加到数据库中。当我单击单选按钮值时,我的页面将刷新。我曾经尝试过使用UpdatePanel,但是在没有页面刷新的情况下效果很好,但是我无法将这些值添加到数据库中。我有一个空异常,文件名在从FileUploadControl中选择图像后变为空 我已经对此进行了搜索,如果在UpdatePanel中添加FileUploadControl,则所选文件将丢失 下面给出的代码段是我如何获得图像名称的C# 在不使用UpdatePanel的情况下单击RadioButtonList时,如何停止页面重新加载?,c#,asp.net,visual-studio-2015,updatepanel,radiobuttonlist,C#,Asp.net,Visual Studio 2015,Updatepanel,Radiobuttonlist,我在我的网页中使用RadioButtonList,其中RadioButtonList项目为a和B。单击项目B时,我显示了几个带有FileUploadControl的图像框,并将它们添加到数据库中。当我单击单选按钮值时,我的页面将刷新。我曾经尝试过使用UpdatePanel,但是在没有页面刷新的情况下效果很好,但是我无法将这些值添加到数据库中。我有一个空异常,文件名在从FileUploadControl中选择图像后变为空 我已经对此进行了搜索,如果在UpdatePanel中添加FileUpload
string imageFile = Path.GetFileName(FileUpload1.PostedFile.FileName);
有没有其他方法可以实现这两个目标?(将它们添加到数据库并单击而不刷新页面)
使用完整代码编辑:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="RadioButtonList1" EventName="SelectedIndexChanged" />
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<div class="textAnswers" id="textAns" runat="server">
<p>
<b>A.</b>
<asp:TextBox ID="answerOneTb" runat="server" Width="95%"></asp:TextBox>
</p>
<p>
<b>B.</b>
<asp:TextBox ID="answerTwoTb" runat="server" Width="95%"></asp:TextBox>
</p>
</div>
<div class="imageAnswers" id="imageAns" runat="server">
<div id="imageA">
<b>A.</b>
<asp:Image ID="Image1" CssClass="images" runat="server" ImageUrl="..\Folder\blankImage.png" Width="150px" />
</div>
<div id="imageB">
<b>B.</b>
<asp:Image ID="Image2" CssClass="images" runat="server" ImageUrl="..\Folder\blankImage.png" Width="150px" />
</div>
<br />
<br />
<br />
</div>
<div class="fileUpload" id="addImageFupld" runat="server">
<div id="fu1">
<asp:FileUpload ID="FileUpload1" runat="server" Width="150px" onchange="ImagePreviewA(this)" accept=".png,.jpg,.jpeg" /><br />
<br />
<dx:ASPxLabel ID="imageName1" runat="server" Text="ASPxLabel" Visible="false"></dx:ASPxLabel>
</div>
<div id="fu2">
<asp:FileUpload ID="FileUpload2" runat="server" Width="150px" onchange="ImagePreviewB(this)" accept=".png,.jpg,.jpeg" /><br />
<dx:ASPxLabel ID="imageName2" runat="server" Text="ASPxLabel" Visible="false"></dx:ASPxLabel>
</div>
</div>
<asp:Button ID="Button1" runat="server" Text="Add Question" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
A.
B
A.
B
在上述给定的代码段中,当用户在RadioButton列表中选择项目A时,当用户单击项目BimageAnswers和fileUpload时,文本答案(Div标签)将被隐藏。单击这些按钮时,RadioButton列表页面中的项目将刷新,并将值添加到数据库中。但是我需要停止页面重新加载,同时将值添加到数据库中。当我使用更新面板时,我得到的文件名变为null,并且在我的代码中得到一个null异常 上传文件时,更新面板基本上需要进行完全回发。为此,您需要在更新面板中发布反向触发器
<asp:UpdatePanel ID="updPanel" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="RadioButtonList1" EventName="SelectedIndexChanged" />
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
<ContentTemplate>
<asp:FileUpload ID="fupload" runat="server" /><br />
<asp:Button ID="btnUpload" runat="server" Text="Upload" />
<asp:RadioButtonList ID="RadioButtonList1" runat="server" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="T1" Value="M1"></asp:ListItem>
<asp:ListItem Text="T2" Value="M2"></asp:ListItem>
</asp:RadioButtonList>
</ContentTemplate>
</asp:UpdatePanel>
另外,请确保您有以下信息:Form.Enctype=“多部分/表单数据”;在代码中设置,也可以在该页面中设置
或者,您需要使用Jquery/Javascript来实现RadiobuttonList click事件。这听起来可能不太好,但如果单击单选按钮进行回发,您可以将AutoPostBack=“false”使用jquery在客户端捕获onchange事件,并显示那些ImageBox和fileupload控件,这样就不需要使用updatepanel,一切都会正常工作 我建议您不要使用更新面板,而是在jquery中使用ajax进行部分更新(异步通信) 在这里,您可以找到如何使用jQuery上传文件 在这里,您可以找到如何在单击单选按钮时切换(显示/隐藏)控件。
希望这能对您有所帮助。请告诉我它是否有效,或者您是否面临任何问题。谢谢您的回答。我试过了。没用。你能解释一下使用Post back trigger的原因吗?使用Post back trigger可以为页面返回完整的帖子,而不是从更新面板返回部分帖子。我的答案有了细微的更改。我在PostBackTrigger中添加了文件上载控件的ID,请尝试我认为它应该可以工作。我收到了此错误。通过RegisterAsyncPostBackControl或RegisterPostBackControl注册ID为“FileUpload1”的控件必须实现InAdminContainer、IPostBackDataHandler或IPostBackEventHandler。您好。谢谢你的回答。它不工作,这就是为什么我使用更新面板。谢谢你的回答。我会检查并让您知道:)