mvc4从表单中获取日期值

本文关键字:取日期 获取 表单 mvc4 | 更新日期: 2024-07-23 07:58:13

Am正在创建一个结账系统。表格的一部分要求填写所用卡的有效期。它由2个小文本框组成,其中1个表示月份,1个表示年份。在我看来,我正在使用以下代码:

@Html.LabelFor(c => c.expiryDate)
@Html.HiddenFor(c => c.expiryDate.Day)
@Html.TextBoxFor(c => c.expiryDate.Month, new { @class = "ccDate" })
<span class="ccDateSep">/</span>
@Html.TextBoxFor(c => c.expiryDate.Year, new { @class = "ccDate" })

然而,当提交表格时,日期一直显示为01/01/0001。所有其他领域都表现良好。

有什么想法吗?

mvc4从表单中获取日期值

DateTime结构是不可变的。您不能只创建一个实例并更改其DayMonthYear。您应该直接绑定expiryDate属性,否则您将不得不在模型中为月份和年份值创建新的属性。然后,您可以使用构造函数自己创建一个实例。

为了扩展Ufuk的答案,在过去这样做的时候,我为客户机上绑定下拉列表的日期、月份和年份创建了属性。然后在控制器中,我将把这些值组合成一个有效的日期并填充属性。例如,对于一个包含DateOfBirth的类,我的模型可能是这样的。

snip
public DateTime dob {get;set;}
public string dobDay {get;set;}
public string dobMonth {get;set;
public string dobYear {get;set;}
snip

我会将下拉列表绑定到dobDay、dobMonth和dobYear字段,然后在您的控制器中将它们重新组装成DateTime,如下所示:

DateTime temp = new DateTime(dobDay, dobMonth, dobYear);
model.dob = temp;

我不确定DateTime构造函数中的参数顺序是否正确,但这是基本思想。