2013-07-03 50 views
0

我從數據庫中檢索一些html代碼,我想在網絡表單中顯示這些值。爲什麼Eval不顯示標籤和文本框?

你可以在下面看到我的代碼。它不顯示標籤和文本框。但是,當我在瀏覽器中查看.aspx頁面源時,可以看到Eval檢索到的標籤和文本框。爲什麼我在頁面中看不到標籤和文本框?

數據庫值:

enter image description here

後面的代碼:

using (BurganEntities burganEntities = new BurganEntities()) 
     { 
      List<DynamicField> dynamicFields=(from dynamicField in burganEntities.DynamicField select dynamicField).ToList(); 
      cdcatalog.DataSource = dynamicFields; 
      cdcatalog.DataBind(); 
     } 

ASPX:

enter image description here

回答

1

你的代碼是簡單地輸出<asp:TextBox />到瀏覽器;它不會使用WebForms處理器將其解析爲將其轉換爲<input />元素。

在你的數據庫,你可能應該存儲:

<input id="txtsdsd" name="txtsdsd" class="textbox" onkeypress="return NumberOnly()" /> 

,然後用Request.Form()檢索值。

+0

謝謝你的回答。我試過了,它顯示在webform上,但我看不到輸入ID和Request.Form輸入值 – Bilgehan

+0

沒有看到正在輸出的頁面的完整源代碼以及您期望的內容,很難找出其他可能的被需要。但是,如果您希望將其填入現有數據,則需要將其作爲您流程中的另一個步驟添加。這表明您可能需要重新考慮是應該直接輸出「輸入」字段,還是基於來自多個數據庫和表單字段的值構建它們。 –

+0

其實你的回答在這種情況下是正確的。我可以看到來自Request.Form的輸入名稱。所以我可以捕捉數據。不過這是一種解決方法。因爲如果我想將ajaxcontroltoolkit元素添加到數據庫,它無法訪問頁面上的ajaxcontroltoolkit。謝謝。 – Bilgehan

3

快速回答是因爲asp,net控件是編譯服務器端的,但是在最終的render html頁面上使用它們作爲文本 - 所以你跳過了這個編譯,而且asp.net頁面一點也不知道他們。

解決的辦法是避免使用asp.net控件並使用普通的html控件。您仍然可以獲得代碼回報,您可能會錯過一些易於使用的功能,但您可以通過其他方式進行工作。

其他可能的解決方案是讀取數據庫並動態創建控件。例如,你可以在你的數據庫行上添加一個標誌,現在創建一個文本框,然後在你後面的代碼中動態創建該文本框。

1

我不確定您是否已經開始編寫動態控件,但作爲第二個回覆的補充,我想提及更多關於動態控件的源代碼。

雖然there is no concept of controls in ASP.NET MVC any longer,你可以按照ASP.NET webform data access頁面。

正如你想在服務器端編譯你的代碼;在任何回傳中,您都會丟失動態內容。所以read this和所有完成。

或者如你所說,你沒有得到文本框的值,請參閱以下方法,

var textBox = FindControl("<id_of_textbox>") as TextBox; 

if(textBox != null) 
{ 
    var textBoxValue = ((TextBox)textBox).Text; 
} 

</id_of_textbox> 

看到FindControl method at this

相關問題