2015-01-30 2 views
0

У меня есть класс данных 20 decimal полей и еще один из 20 string полей. Я заполняю оба класса из SQL-запросов, а затем используйте значения для заполнения ярлыков на веб-странице.Исключить некоторые поля из класса

public class MyDecimals 
{ 
    public decimal MyDecimal1 { get; set; } 
    public decimal MyDecimal2 { get; set; } 
    public decimal MyDecimal3 { get; set; } 
    public decimal MyDecimal4 { get; set; } 
    public decimal MyDecimal5 { get; set; } 
    public decimal MyDecimal6 { get; set; } 
    . 
    . 
    public decimal MyDecimal20 { get; set; } 
} 

и

public class MyDecimalsNames 
{ 
    public string MyDecimal1Name { get; set; } 
    public string MyDecimal2Name { get; set; } 
    public string MyDecimal3Name { get; set; } 
    public string MyDecimal4Name { get; set; } 
    public string MyDecimal5Name { get; set; } 
    public string MyDecimal6Name { get; set; } 
    . 
    . 
    public string MyDecimal20Name { get; set; } 
} 

На aspx странице этикетки названы как lblMyDecimal1, lblMyDecimal1Name, lblMyDecimal2, lblMyDecimal2Name .....

Вместо кода линии значения меток по линии, как это ...

lblMyDecimal1.Text = myClass.MyDecimal1.ToString("#,##0"); 
lblMyDecimal1Name.Text = myNamesClass.MyDecimal1Name; 
lblMyDecimal2.Text = myClass.MyDecimal2.ToString("#,##0"); 
lblMyDecimal2Name.Text = myNamesClass.MyDecimal2Name; 

Я пытаюсь Переберите поля в классе и присвоить значение меток на основе имени поля:

foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(myClass)) 
{ 
    ((Label)FindControl("lbl" + prop.Name)).Text = prop.GetValue(myClass).ToString("#,##0"); 
} 
foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(myNameClass)) 
{ 
    ((Label)FindControl("lbl" + prop.Name)).Text = prop.GetValue(myNameClass) + ""; 
} 

Это будет работать, как я хочу, но на данный момент у меня есть только метки 1 - 12, 13 - 20 не используются на этой странице.

Так что мой вопрос: что для меня лучше всего пропускать поля/метки, которых нет на странице?

Я знаю, что могу создать список исключений и проверить каждое значение для не в списке, но я хотел бы исключить их до этого, как если бы они не были в классе, если это было возможно.

+0

Если они в классе, они находятся в классе. Лучше всего использовать пользовательский атрибут, чтобы исключить их или изменить код для проверки индекса. – artm

ответ

3

Просто проверьте, существует ли метка:

if (FindControl("lbl" + prop.Name) != null) { ... } 

Или use databinding.

+2

Или повторите этикетки ... –

+0

Теперь я чувствую себя немного глупо! Прекрасное спасибо. – Fred

Смежные вопросы