在服務器端,我創建了一個文本,其文本設置爲輸入類型文件元素,其屬性爲runat = 'server'
,模式設置爲passThrough
並將其附加到div。文字和輸入元素都有它自己的唯一ID。我的問題是試圖從div標籤中獲取輸入元素。我能夠以編程方式獲取文字,但文字不包含任何控件,文本值具有我需要的輸入元素。我試圖尋找它自己的輸入元素,並保持null。我檢查過這個頁面,我看到輸入元素爲runat='server'
,它是,但我無法得到它。我需要能夠得到這個輸入元素才能上傳它的文件。如何從文字中獲取輸入元素
這是我到目前爲止已經試過:
客戶端:
<div runat="server" id="docRequeridosMainDiv" style="display: table;
width: 60%; text-align: right">
<%-- Control set on server side --%>
</div>
服務器端:(此測試在頁面加載事件)
//Attach inivisible input type file
uploadLit.Text += string.Format(@"<div><input type='file' id='{0}File' runat = 'server' style='display: none;'
onchange='" + docsRequeridos.ElementAt(i).Nombre + @"FileSelected()' /></div>", lbl.Text);
uploadLit.ID = lbl.Text + "FileLit";
docRequeridosMainDiv.Controls.Add(uploadLit);
//var lit = (Literal)docRequeridosMainDiv.FindControl(uploadLit.ID);
var lit = (HtmlGenericControl)docRequeridosMainDiv.FindControl(lbl.Text +"File");
忽略事件附加到輸入,工作。
我已經調試了註釋3210並且控件集合有0但文本有輸入。第二個亮起的是返回空值。
試圖在點擊事件中使用相同的Findcontrol
行來獲取它,結果仍然相同。沒有控制的文字。
以防萬一你想知道爲什麼輸入是display:none
因爲我正在做一個自定義文件上傳,但這並不重要,因爲所有其他功能的作品,唯一不行的是這一個。
'FindControl()'將只能找到服務器控件。您添加該文件上傳器的方式不是服務器控件。你應該使用'HtmlInputFile'來替代(_without_這個文字)。 – mshsayem
你是什麼意思?你可以詳細說明一下嗎?或者給我一個例子 – Jcorretjer
將runat = server這個單詞添加到你的文字中並不會讓它成爲一個服務器控件。您只是將這些單詞寫入頁面,服務器不會處理它們以保持任何意義 –