ASP.NET 中使用更新命令的日期格式问题

Date fomat issue using UpdateCommand in ASP.NET

我正在使用 ASP.NET (C#),MySQL。

我正在尝试使用由 SQLDataSource 提供的 FormView 组件...目标是创建一个表单来处理来自单个 table 的数据,而无需过多编码并尽可能多地依赖框架尽我所能。

我找到了如何显示数据和编辑它们,但是当我来到 'date' 字段时,我发现我的任务提前停止了。 因为我是意大利人,所以我使用标准 'italian' 日期格式 (dd/MM/yyyy),这与 MySQL 内部日期格式 (yyyy-MM-dd) 完全不同,这会导致日期格式错误我尝试更新字段。

包含'date'字段的表单是这样定义的:

<asp:FormView
   ID="_frmData"
   runat="server"
   DataKeyNames="id"
   DataSourceID="_sdsContatto"
   DefaultMode="Edit">
   <EditItemTemplate>
        <asp:Table runat="server">
            <asp:TableRow>
                <asp:TableCell>
                    <asp:TextBox 
                        ID="_txtDate"
                        runat="server"
                        Text='<%#Bind("date_field","{0:dd/MM/yyyy}")%>' />
                 </asp:TableCell>
             </asp:TableRow>
        </asp:Table>
   </EditItemTemplate>
</asp:FormView>

SQLDataSource 是这样定义的:

<asp:SqlDataSource ID="_sdsData 
                   runat="server"
                   ConnectionString="<%$ ConnectionStrings:data_db %>"
                   ProviderName="<%$ ConnectionStrings:data_db.ProviderName %>"
                   SelectCommand=" SELECT
                                         date_field
                                   FROM
                                         table
                                   WHERE
                                         id=@id;"

                   UpdateCommand=" UPDATE
                                         table
                                   SET
                                         date_field = @date_value
                                   WHERE
                                         id=@id;">
</asp:SqlDataSource>

使用 'italian' 日期格式导致此错误:

Incorrect date value: '9/12/1971' for column 'date_field' at row 1

有解决此类问题的方法吗?

我试过 MySQL STR_TO_DATE() 但运气不好。

最好的问候任何帮助或建议。

迈克

解决方案从数据提交转变成 'separate' 可视化。简而言之,解决此类问题的最佳方法是:

<asp:FormView
    ID="_fvData"
    runat="server"
    DataKeyNames="id"
    DataSourceID="_sdsTable1"
    DefaultMode="Insert" Width="100%">
    <InsertItemTemplate>
         <asp:TextBox
              ID="_txtDate"
              runat="server"
              Text='<%#Eval("date_field","{0:dd/MM/yyyy}")%>' />
    </InsertItemTemplate>
</asp:FormView>

在 sqldatasource(在 InsertParametersUpdateParameters 部分)中,我们需要通过 ControlParameter 条目引用字段,这样:

<asp:SqlDataSource 
    ID="_sdsTable1" 
    runat="server"
    InsertCommandType="StoredProcedure"
    InsertCommand="create_table1">
    <InsertParameters>
         <asp:ControlParameter 
              Name="date_field" 
              ConvertEmptyStringToNull="true" 
              Type="DateTime" 
              ControlID="_fvData$_txtDate" 
              PropertyName="Text" />
    </InsertParameters>
</asp:SqlDataSource>