View 是否正在重置其 Model 中的所有值?

Is View reseting all values in its Model?

在我的模型中,我有一些 DateTime 变量未在视图模板中触及,但在发送到视图之前在 GET 方法中设置为 DateTime.Now。当我在视图中显示它时,它是确定的(显示实际日期和时间)。 其余变量在表单字段中更改,然后使用 POST 方法发送给控制器的操作。

当我在控制器的 POST 操作中设置断点时,我看到变量的值设置为 {0001-01-01 00:00:00} 即使我没有在任何地方更改值之前。

所以问题是: View 是否正在重置其模型中的所有值?

你必须到幕后看看这里发生了什么。 GET 方法 returns 设置了变量的模型,传输到客户端。在提交时,客户端获取所有字段并将它们发送到服务器,在那里它再次被解析为 Model。仅传输作为某些 HTML 代码(例如输入)或通过 JavaScript 在客户端设置的字段。要保留 DateTime 值,您需要为其创建一个 Hidden 字段。

Html.HiddenFor(m => m.DateProperty)

看到这个问题,它涵盖了同样的问题:What does HTML.HiddenFor do?

听起来您的日期时间未包含在发送回服务器的字段中,因此使用 DateTime 默认值 (0001-01-01) 对其进行了初始化。

如果您希望 POST 处理程序接收它,您需要将它往返回您的服务器:

@Html.HiddenFor(m => m.MyDate)