我可以在ASP.Net页面的标记中使用Enum.TryParse

时间:2016-06-23 09:04:47

标签: html asp.net

我从实体框架中读取数据并将ASP.NET页面(ASPX)上的转发器绑定到它。 我的一个字段 - iFieldType - 包含一个整数值,该值被解析为页面标记中的枚举项,如下所示:

<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。 可以在markup / html中完成吗?

1 个答案:

答案 0 :(得分:0)

至少有两种可能的解决方案。

A)我们可以在页面的代码隐藏中编写一个执行tryparse的公共(!)方法。

每个例子:

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)我们也可以在标记中完成它,但它会使代码更复杂。在这种情况下,我们检查值是否为空。

<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"))) %>' />