DataAnnotation未显示存储在ViewModel中的数据

时间:2015-01-06 21:23:01

标签: c# asp.net-mvc-4 razor data-annotations

我有一个编辑视图。传入填充的ViewModel,用户可以编辑和提交。

    <div class="form-group">
        <strong>Date Effective:</strong>
        <div class="col-md-10">
            <p>
                @Html.EditorFor(model => model.storeConfiguration.DateEffective)
                @Html.ValidationMessageFor(model => model.storeConfiguration.DateEffective)
        </div>
    </div>

视图模型包含:

public DateTime DateEffective { get; set; }

这将日期显示为字符串,并允许轻松编辑。但是,我遇到了数据注释,发现通过添加[DataType(DataType.Date)]我能够获得一个有用的工具来选择日期。

不幸的是,当我在上面的编辑视图中使用时,它会显示一个空的日期选择器,而不是显示ViewModel中的日期。

是否可以在不删除编辑视图中的ViewModel数据的情况下获取此日期选择工具?

编辑:

在尝试追踪此错误的同时,我在查看“检查元素”时遇到了这个问题

<input class="text-box single-line" data-val="true" data-val-date="The field DateEffective must be a date." id="storeConfiguration_DateEffective" name="storeConfiguration.DateEffective" type="date" value="11/5/2014">

这表示仍然存储了正确的值,它只是没有显示给用户。

编辑2:

初步测试显示[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]正在运作。我并不完全理解它,但似乎这是视图访问它所需的日期格式。从那里,EditorFor能够在日期挑选工具中显示它,这个工具是MM / dd / yyyy,这对我来说很好。

如果有人对这是做什么以及为什么有一个可靠的答案,我会接受它作为选择的答案。

1 个答案:

答案 0 :(得分:0)

根据此SO,问题可能是设置value属性的日期格式。