【问题标题】:Insert proper phone format插入正确的电话格式
【发布时间】:2012-03-07 20:39:54
【问题描述】:

我有一个存储电话号码的文本框。

<asp:TextBox runat="server" ID="phone" MaxLength="10" Columns="10" Width="90px" />
                        <asp:MaskedEditExtender ID="phone_MaskedEditExtender" runat="server" CultureAMPMPlaceholder=""
                            CultureCurrencySymbolPlaceholder="" CultureDateFormat="" CultureDatePlaceholder=""
                            CultureDecimalPlaceholder="" CultureThousandsPlaceholder="" CultureTimePlaceholder=""
                            Enabled="True" TargetControlID="phone" Mask="(999)-999-9999" ClearMaskOnLostFocus="False">
                        </asp:MaskedEditExtender>

问题是当我插入电话号码 9999999999 时,数据库中的号码变成 (999)-9999。 我想要的是9999999999。 另一个代码是:

 <asp:SqlDataSource ID="InsertExtraInfo" runat="server" ConnectionString="<%$ ConnectionStrings:MembershipDB %>"
                    InsertCommand="CreateAdditionalAccountInfo" InsertCommandType="StoredProcedure">
                    <InsertParameters>
                        <asp:ControlParameter Name="FirstName" Type="String" ControlID="FirstName" PropertyName="Text" />
                        <asp:ControlParameter Name="LastName" Type="String" ControlID="LastName" PropertyName="Text" />
                        <asp:ControlParameter Name="Degree" Type="String" ControlID="Degree" PropertyName="Text" />
                        <asp:ControlParameter Name="Organization" Type="String" ControlID="Organization"
                            PropertyName="Text" />
                        <asp:ControlParameter Name="Phone" Type="String" ControlID="Phone" PropertyName="Text" />
                        <asp:ControlParameter Name="Ext" Type="String" ControlID="Ext" PropertyName="Text" />
                        <asp:ControlParameter Name="last4SSN" Type="String" ControlID="TextSSN" PropertyName="Text" />
                    </InsertParameters>
                </asp:SqlDataSource>

存储过程查询是

INSERT INTO [User_ExtraInfo] ([UserId], [FirstName], [LastName], [Degree], [Organization], [Phone], [Ext], [last4SSN],[Trained]) VALUES (@UserId, @FirstName, @LastName, @Degree, @Organization, @Phone, @Ext

谢谢。

【问题讨论】:

    标签: c# asp.net sql-server tsql


    【解决方案1】:

    把proc改成这样:

    INSERT INTO [User_ExtraInfo] ([UserId], [FirstName], [LastName], [Degree], [Organization], [Phone], [Ext], [last4SSN],[Trained]) VALUES (@UserId
    , @FirstName
    , @LastName
    , @Degree
    , @Organization
    , REPLACE(REPLACE( REPLACE(@Phone,'(',''),')','') ,'-','')  , @Ext )
    

    我建议这种方法的原因是因为您使用的是 SQLDatasource 对象,并且我认为不可能指示插入参数(至少不是从标记中以声明方式)忽略掩码。您最好的选择可能只是修改 proc。

    更新 - 程序化方法:

    1. 将 OnInserting 的处理程序添加到 SqlDataSource:

      <asp:SqlDataSource ID="InsertExtraInfo" runat="server" OnInserting="On_Inserting"
      
    2. 在代码上处理事件并在那里进行替换:

      protected void On_Inserting(Object sender, SqlDataSourceCommandEventArgs e) {
       e.Command.Parameters["@Phone"].Value=phone.Text.Replace("..."); // etc
      }
      

    注意:未经测试,但这是想法。

    【讨论】:

    • 如果你能在不改变 proc 的情况下做到这一点会更好,因为我无权改变它。
    • @Love 阅读我的更新。这应该接近你需要的。
    • e.Command.Parameters["@Phone"] 还是 e.Command.Parameters["Phone"]?我遇到了一个例外。
    • @Love 我不确定,但它是这两者之一。试一试,你试一试比我猜容易。
    • 此 SqlParameterCollection 不包含具有 ParameterName 'Phone' 的 SqlParameter。
    猜你喜欢
    • 2022-07-06
    • 2013-09-05
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2022-11-30
    相关资源
    最近更新 更多