使用 GridView 编辑器表单中的 SetEditItemTemplateContent 更新日期时间时,将 NULL 值发送到控制器

NULL value is sent to Controller while updating datetime rendered using SetEditItemTemplateContent from GridView Editor Form

DevExpress 17.1

我在 GridView 中有一个 DateTime 列,它将日期时间显示为 MM/dd/yyyy hh:mm:ss。

我已经使用 SetEditItemTemplateContent 在 EditorForm 中使用 DateEdit 控件来更新 DateTime 字段。

settings.Columns.Add(column =>
    {
        column.FieldName = "C_DateTime";
        column.Caption = "C_DateTime";
        column.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
        column.PropertiesEdit.DisplayFormatString = "dd/MM/yyyy hh:mm:ss";

        column.SetEditItemTemplateContent(c =>
        {

            var workDate = (DateTime?)DataBinder.Eval(c.DataItem, "C_DateTime");

            Html.DevExpress().DateEdit(
                dateEdit =>
                {
                    var keyValue = c.KeyValue == null? 0 : c.KeyValue;

                    dateEdit.Name = "C_DateTime" + keyValue.ToString();
                    dateEdit.Properties.UseMaskBehavior = true;
                    dateEdit.Properties.EditFormat = EditFormat.Custom;
                    dateEdit.Properties.EditFormatString = "dd/MM/yyyy hh:mm tt";
                    dateEdit.Properties.TimeSectionProperties.Visible = true;
                    dateEdit.Properties.TimeSectionProperties.TimeEditProperties.EditFormat = EditFormat.Custom;
                    dateEdit.Properties.TimeSectionProperties.TimeEditProperties.EditFormatString = "hh:mm tt";
                    dateEdit.Date = DateTime.Now;
                }
                ).Bind(workDate).Render();
        });
    });

当我在 EditorForm 中更改日期时间值并单击“更新”按钮时,NULL 值被发送到控制器而不是修改后的日期时间值。

请提出解决此问题的方法。

根据绑定的Model属性指定编辑器名称:

Html.DevExpress().DateEdit(dateEdit => {
    //var keyValue = c.KeyValue == null? 0 : c.KeyValue;
    //dateEdit.Name = "C_DateTime" + keyValue.ToString();
    dateEdit.Name = "C_DateTime";
    ...
    //or
    dateEdit.Name = column.FieldName;
}).Bind(workDate).Render();

请注意,您可以通过 column.PropertiesEdit().DateEdit 设置添加必要的设置(无需使用 SetEditItemTemplateContent 方法)。