我从实体框架中读取数据并将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中完成吗?
答案 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"))) %>' />