2016-06-23 4 views
0

Я прочитал данные из фреймворка сущности и привязал ретранслятор на странице ASP.NET (ASPX) к нему. Один из моих полей - iFieldType - содержит целое значение, которое разобранную к пункту перечисления в разметке страницы так:Могу ли я использовать Enum.TryParse в разметке страницы ASP.Net

<owiw:CustomTextBox runat="server" ReadOnly="true" ID="txt_FieldType" 
        Text='<%# Enum.Parse(typeof(DatabaseHelper.CustomFieldTypes), Convert.ToString(DataBinder.Eval(Container.DataItem, "iFieldType"))) %>' /> 

Это потому, что пользователи не хотят видеть на примере " 1 "на странице, но имя типа поля" TextBox ". К сожалению, iFieldType может быть NULL. Так что я должен заменить Enum.Parse на Enum.TryParse. Можно ли это сделать в разметке/html?

+0

Возможно, создайте класс преобразователя, который выполняет «TryParse» и возвращает строку. –

+0

Спасибо за подсказку! Это снова подтолкнуло меня к правильному пути. –

+0

:) Мое удовольствие .. Удачи .. –

ответ

0

Существует как минимум два возможных решения.

A) Мы можем запрограммировать код на странице общедоступного (!) Метода, который выполняет tryparse.

Per Например:

public string FieldTypeTryParseToString(object value) 
{ 
    if (value == null) 
    { 
     return "0"; 
    } 

    return value.ToString(); 
} 

Затем в разметке мы реализуем новый метод:

<owiw:CustomTextBox runat="server" ReadOnly="true" ID="txt_FieldType" 
    Text='<%# Enum.Parse(typeof(DatabaseHelper.CustomFieldTypes), FieldTypeTryParseToString(DataBinder.Eval(Container.DataItem, "iFieldType"))) %>' /> 

B) Мы можем сделать это в разметке тоже, но это будет сделать код более сложным. В этом случае мы проверяем, имеет ли значение значение null.

<owiw:CustomTextBox runat="server" ReadOnly="true" ID="txt_FieldType" 
    Text='<%# Enum.Parse(typeof(DatabaseHelper.CustomFieldTypes), DataBinder.Eval(Container.DataItem, "iFieldType") == null ? "0" : Convert.ToString(DataBinder.Eval(Container.DataItem, "iFieldType"))) %>' /> 
Смежные вопросы