在DetailsView中格式化和验证asp:Literal控件

时间:2012-10-06 13:12:28

标签: asp.net vb.net formatting validation code-behind

在DetailsView中,其中一个控件是名为PrimaryPhone的TextBox。

使用ASP:文字控件中的string.Format格式化PrimaryPhone。

数据存储在数据库中:

9781231234

使用Iif函数处理10位数字的格式化。

<asp:TemplateField HeaderText="Primary Phone:" SortExpression="PrimaryPhone">
    <EditItemTemplate>
        <asp:TextBox ID="TextBoxPrimaryPhoneEdit" runat="server" Text='<%# Bind("PrimaryPhone") %>'></asp:TextBox>
    </EditItemTemplate>

    <InsertItemTemplate>
        <asp:TextBox ID="TextBoxPrimaryPhoneInsert" runat="server" Text='<%# Bind("PrimaryPhone") %>'></asp:TextBox>
    </InsertItemTemplate>

    <ItemTemplate>
        <asp:Literal ID="PrimaryPhoneLiteral" runat="server" 
             Text='<%# iif(Len(Eval("PrimaryPhone"))=10,
             string.Format("{0:(###) ###-####}", Int64.Parse(Eval("PrimaryPhone").ToString())),
             Eval("PrimaryPhone")) %>' />
    </ItemTemplate>

    <ItemStyle ForeColor="Blue" />
</asp:TemplateField>

我们希望从VB.Net代码隐藏文件格式化PrimaryPhone,而不是Iif函数,因为电话号码可能是:

10 digits
 7 digits

部分电话号码也不见了。

我们希望根据输入PrimaryPhone DetailsView TextBox的数字长度对其进行格式化。我们希望为此使用Case语句。

当电话号码不是10位或7位数时,是否也可以在EditItemTemplate和InsertItemTemplate中验证电话号码的输入并显示Ajax验证标注扩展器?

您能否显示从代码隐藏文件格式化PrimaryPhone所需的编码?

1 个答案:

答案 0 :(得分:2)

在CodeBehind文件中编写公共静态函数,并从aspx页面调用它,传递电话值。

(我在这里使用C#代码,但你应该明白这一点)

public static string FormatPhoneNumber(string phoneNumber)
{
    // do your conditional formatting here
    return result;
}

并在你的ItemTemplate中:

<ItemTemplate>
    <asp:Literal ID="PrimaryPhoneLiteral" runat="server" 
         Text='<%# FormatPhoneNumber(Eval("PrimaryPhone").ToString()) %>' />
</ItemTemplate>