从视图传递的数据在回发后不会保留

时间:2019-02-11 07:45:52

标签: html razor model-view-controller model postback

我无法找到解决方案,因为我认为这是一个错误,或者也许我没有看到应有的东西。

我正在将模型从受控传递为强类型数据。但是,只有一个参数存在错误,回发后会清除它的数据。enter image description here 当我单击搜索。 enter image description here 您可以在此处看到“关闭时间”中的日期仍然存在,但是“截止时间”中的文本已消失。您最后看到的日期是@Model.CutOffTimeFrom - @Model.CutOffTimeTo的值,仅用于查看是否清除或删除了数据,但不是,只是删除了EditorFor上的显示。

我也使用<input>标签尝试了这个one,但它仍然是相同的输出。

下面是我的模特:

[AssertThat("CutOffTimeFrom <= CutOffTimeTo", ErrorMessage = "Date To should be greater than Date From")]
    [RequiredIf("CutOffTimeFrom != null", ErrorMessage = "Date From is required")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime? CutOffTimeFrom { get; set; }

    [RequiredIf("CutOffTimeTo != null", ErrorMessage = "Cut Off Time From is required")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime? CutOffTimeTo { get; set; }

这是视图:

<div>
     @*<input type="date" name="CutOffTimeFrom" value="@Model.CutOffTimeFrom" class="form-control input-sm" />-<input type="date" name="CutOffTimeTo" value="@Model.CutOffTimeTo" class="form-control input-sm" />*@
     @Html.EditorFor(m => m.CutOffTimeFrom, new { htmlAttributes = new { @class = "form-control input-sm" } }) - @Html.EditorFor(m => m.CutOffTimeTo, new { htmlAttributes = new { @class = "form-control input-sm" } })
     @Html.ValidationMessageFor(model => model.CutOffTimeFrom, "", new { @class = "text-danger" })
     @Html.ValidationMessageFor(model => model.CutOffTimeTo, "", new { @class = "text-danger" })
</div>

所有其他字段都可以正常工作。尽管满足搜索条件,但仅清除了截止时间,值仍在模型上传递,但它并未显示在视图上。

有人遇到这个问题吗?

2 个答案:

答案 0 :(得分:0)

我们能看到Controller正在处理此问题吗,因为它可能发生未绑定模型的情况

答案 1 :(得分:0)

我彻底检查了每个元素,属性,参数的差异,并看到了一个差异,即日期格式。在检查每个EditorFor的检查元素时发现了错误,并发现它们是不同的日期2019/02/0802/08/2019,其中后者是错误的。

更改自:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]

收件人:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

[DataType(DataType.Date)]可能无法呈现02/08/2019,这就是为什么它不重新填充表单的原因。