0

似乎有一些我没有得到的基本 MVC 部分。情况如下:

我的 View (Index.aspx) 具有三个部分视图(一个带有表格,两个带有一个表格)。

所有四个视图都是强类型的;父级 (index.aspx) 有一个模型,其中包含三个作为模型传递给局部视图的属性。

部分视图之一的模型之一(允许用户为表创建新记录的表单)具有 DataAnnotations,以便在提交表单时启用验证。两个表单字段是带有 RangeAttribute 的整数[Range(1000,9999)],两个是带有 DisplayFormatAttribute 的 DateTime[DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}")]

我的部分视图对输入字段使用 Html.EditorFor() 帮助器,如下所示:

<%: Html.EditorFor<MyType, DateTime>(m => m.StartDate, new { @class = "specialclass" })%>

在我的 Action 方法中,我为我的父级创建了一个视图模型,并为部分添加了空视图模型(除了填充了记录的表),然后我将它传递给我的 return View() 语句。我排除了表格将被填充,但表单字段应该是空的,但它们不是。

那么,当我为视图执行 HTTP 获取时,为什么我的表单字段填充了两个整数字段的 0 和两个日期字段的最小日期值?

我做错了什么/我没有得到什么?

我想我的问题是:如果我有一个强类型的用户控件,它是一个表单,当我为父视图执行 http get 时,应该如何“处理”它?我需要给它一个模型,对吧?

4

1 回答 1

0

无论您是否设置值,系统都会尝试呈现它们。由于 int 不可为空,因此它在未初始化时往往会返回 0 以便清楚。我假设的 DateTime,因为它将为空,默认为 DateTime.Min,因为您已指定您希望通过字段和格式都有数据。

于 2011-02-04T16:54:27.953 回答