C# 查找动态创建的控件时出错
我正在使用Fileupload控件上载图像,在加载文件后,当我单击上载按钮时,文件将保存在服务器的文件夹中,但在保存到数据库之前,我需要添加图像描述以及图像。。但是我不知道我有什么错误。我可以将文件保存在文件夹中,但当我将其保存到数据库中时,将只找到一个动态添加的控件,然后它将提供未设置为对象实例的对象引用,即使该特定分区中有多个控件。在进入代码之前,我将在上载控件后告诉我正在添加哪些控件文件我正在为我上传的每个图像文件添加一个图像控件和文本框。。当我只上传一个文件时,它会在第一次上传后再次进入foreach循环。。我的代码可能会解释得更多 这是我的.aspx代码:C# 查找动态创建的控件时出错,c#,asp.net,html,file-upload,dynamic-controls,C#,Asp.net,Html,File Upload,Dynamic Controls,我正在使用Fileupload控件上载图像,在加载文件后,当我单击上载按钮时,文件将保存在服务器的文件夹中,但在保存到数据库之前,我需要添加图像描述以及图像。。但是我不知道我有什么错误。我可以将文件保存在文件夹中,但当我将其保存到数据库中时,将只找到一个动态添加的控件,然后它将提供未设置为对象实例的对象引用,即使该特定分区中有多个控件。在进入代码之前,我将在上载控件后告诉我正在添加哪些控件文件我正在为我上传的每个图像文件添加一个图像控件和文本框。。当我只上传一个文件时,它会在第一次上传后再次进入
<form id="ContentPlaceHolder1" runat="server">
<div class="transbox" id="mainbk" runat="server" style="position:absolute; top:0px; left:0px; width: 100%; height: 100%;" >
<asp:FileUpload runat="server" ID="UploadImages" style="background-color:white; position:absolute; font-family:'Palatino Linotype'; font-size:medium; top: 4px; left: 350px; right: 251px;" Width="500px" AllowMultiple="true"/>
<asp:Button runat="server" ID="uploadedFile" style="position:absolute; font-family:'Palatino Linotype'; font-size:medium; top: 4px; left: 870px; width: 112px; height: 29px;" Text="Upload" OnClick="uploadFile_Click" />
<asp:Panel ID="updtpanel" runat="server" CssClass="transbox" style="width:100%;height:100%;left:0px;top:0px;position:absolute" Visible="false">
<asp:Button ID="btnsave" runat="server" UseSubmitBehavior="true" Text="Save" OnClick="btnsave_Click" Font-Bold="true" BackColor="Yellow"></asp:Button>
</asp:Panel>
</div>
</form>
*我在上述代码的最后一部分(即保存按钮单击事件)中遇到错误。对于Textbox Find控件,我收到错误消息。第一个图像将成功保存,但对于其他图像,即使它们存在于设计中,也无法找到控件。*
我只想知道我是否在保存点击事件中犯了任何错误,或者整个编码本身是否有任何错误
编辑
因此,这是在运行时呈现控件后的HTML源代码:
<div id="mainbk" class="transbox" style="position:absolute; top:0px; left:0px; width: 100%; height: 100%;">
<input type="file" multiple="multiple" name="UploadImages" id="UploadImages" style="width:500px;background-color:white; position:absolute; font-family:'Palatino Linotype'; font-size:medium; top: 4px; left: 350px; right: 251px;">
<input type="submit" name="uploadedFile" value="Upload" id="uploadedFile" style="position:absolute; font-family:'Palatino Linotype'; font-size:medium; top: 4px; left: 870px; width: 112px; height: 29px;">
<div id="updtpanel" class="transbox" style="width:100%;height:100%;left:0px;top:0px;position:absolute">
<input type="submit" name="btnsave" value="Save" id="btnsave" style="background-color:Yellow;font-weight:bold;">
<div class="head">Write Description</div><div id="ind1" class="dataload">
<img id="img1" class="loadimg" runat="server" src="../Images/Gallery/God%201.jpg">
<textarea name="txt1" rows="2" cols="20" id="txt1" class="txtdes"></textarea>
</div><div id="ind2" class="dataload">
<img id="img2" class="loadimg" runat="server" src="../Images/Gallery/God%202.jpg">
<textarea name="txt2" rows="2" cols="20" id="txt2" class="txtdes"></textarea>
</div><div id="ind3" class="dataload">
<img id="img3" class="loadimg" runat="server" src="../Images/Gallery/God%203.jpg">
<textarea name="txt3" rows="2" cols="20" id="txt3" class="txtdes"></textarea>
</div>
</div>
</div>
写描述
已编辑
我只是更深入地了解了我得到的例外。。。据说
”((System.Web.UI.HtmlControls.HtmlContainerControl)(dv)).InnerHtml“引发了类型为“System.Web.HttpException”的异常
这究竟意味着什么。。它还表示控件不是文本。。那是什么意思。。为什么找不到我附加的控件..请帮我解决..在PreRender事件中添加控件,至少从PageLoad访问它们。在将控件渲染到浏览器后,是否也可以包含HTML源代码? 如果
cd.FindControl(“ind”+cnt1)
在第一种情况下返回null会怎么样
cd.FindControl("ind" + cnt1).FindControl("txt" + cnt1) as TextBox
FindControl不仅搜索一个级别,还搜索所有控件层次结构。也许这不是错误的原因,但它有助于把事情弄清楚。您还可以检查Request.Form.Keys并查看textbox的id是否存在。@TakeMeAsAGuest。。假设我有一个div,并且在该div中包含动态添加的文本框和图像。。现在,如果我使用FindControl并找到那些ID,那么显然我应该正确地。。当我在运行时看到它时,它的右边有一些控件。。但是findcontrol找不到它…:(如果你知道…@TakeMeAsAGuest..请给我一个解决方案。我是否可以使用Request.Form.Keys..cs检查图像?我可以找到文本框,但不能找到图像…:(@TakeMeAsAGuest..我正在第_load页再次加载控件..因此,每当页面加载时,控件都会在那里..这里有两种情况:情况1:如果我只上载一个文件,则会处理并添加与该文件相关的图像和文本框..但在这里,它再次进入forloop并尝试查找控件..这会给出错误…案例2:如果有多个文件,那么同样的案例..它进入后找不到任何控件(第一种情况下,它不会返回null..仅从第二次开始,它将作为对象引用返回,而不是设置为对象的实例..顺便说一句,你发布了与我尝试过的相同的代码..请详细说明..@Amit…我在渲染后添加了HTML源代码..你现在能了解一些吗…:(
cd.FindControl("ind" + cnt1).FindControl("txt" + cnt1) as TextBox