簡體   English   中英

mvc4從表單中獲取日期值

[英]mvc4 get date values from form

我正在建立一個結賬系統。 部分表格要求使用卡的到期日期。 這包括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。 所有其他領域都很好。

有任何想法嗎?

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構造函數中的參數是否正確,但這是基本的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM