2012-08-23 54 views
2

我在一個aspx頁面上加載了一個文本框,其ID以「txt」爲前綴,ID的其餘部分在某個對象中具有相同名稱的對應屬性。我希望能夠通過這些字符串屬性進行枚舉,並在發現具有相同名稱(刪除前綴)的文本框的位置進行更新。有任何想法嗎?我知道通過使用Dictionary我可以解決這個問題,但它並不理想。使用枚舉更新對象的字符串屬性

+0

這似乎是一個困難的設計處理。它是否可以改變?每當你設計出唯一的解決方案似乎是「使用反思」的東西時,你必須問自己,如果你確信你不能更好地設計它。 – Servy

+0

如果您覺得某個答案對您有幫助,那麼您應該通過點擊旁邊的複選框來選中它並/或將其標記爲答案,而不要將其編輯爲您的問題。 – Servy

+0

我不得不等待點擊它被鎖定的複選框。感謝大家。 – Roooss

回答

4

你可以做,使用反射:

MyObject data = new MyObject(); 
foreach (var pi in typeof(MyObject).GetProperties().Where(i => 
             i.PropertyType.Equals(typeof(string))) 
{ 
    var control = FindControl("txt" + pi.Name) as ITextControl; 
    if (control != null) 
     pi.SetValue(data, control.Text, null); 
} 
+0

因此,看看你有什麼,這將使每個屬性形成我的對象,並使用匹配的文本框的值更新它? – Roooss

+0

唯一的是我只想獲得字符串屬性不是所有的 – Roooss

+1

當沒有文本框屬性時添加檢查爲空 –

0

只是找到網頁上的所有文本框控件,然後填寫使用反射coresponding性能。

1

您可以用控制工作:

foreach (Control control in divXYZ.Controls) 
    if (control is TextBox) 
     ((TextBox)control).Text = "whatever"; 

的FindControl是,你可以在你的解決方案中使用的另一種方法:

Control myControl = FindControl("txtYourID"); 

http://msdn.microsoft.com/en-us/library/486wc64h.aspx