2012-05-07 48 views
0

我的模型具有日期屬性的對象......我的日期似乎不張貼回的形式向控制器

[Required(ErrorMessage="{0} is required")] 
    [Display(Name="Donation date")] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
    public DateTime DonationDate { get; set; } 

的觀點有它的編輯....

<div class="editor-label"> 
     @Html.LabelFor(model => model.Donation.DonationDate) 
    </div> 
    <div class="editor-field"> 
     @Html.TextBox("txtDate", Model.Donation.DonationDate.ToString("dd/MM/yyyy"), new { @class = "date"  }) 
     @Html.ValidationMessageFor(model => model.Donation.DonationDate) 
    </div> 

控制器只是接收回模型......但是當我這樣做的控制器,並給它另一種觀點...

ViewBag.Date = model.Donation.DonationDate; 

每當我回來 1/1/0001 12:00:00 AM無論日期設置爲什麼。有什麼想法嗎?謝謝!

忘了提...我還使用在編輯欄中JQuery的日期選擇器:

$('.date').attr("placeholder", "dd/mm/yy").datepicker({ 
     dateFormat: "dd/mm/yy", 
     changeMonth: true, 
     changeYear: true 
    }); 

回答

2

您可以使用TextBoxFor,使視圖引擎知道如何正確標記表單字段(這樣模型聯編程序會在回發中識別它):

@Html.TextBoxFor(model => model.Donation.DonationDate, new { @class = "date" }) 

或者,您可以手動正確命名文本框。我不知道究竟是什麼會是什麼樣子......

更新

好吧,我好奇,所以我檢查。嵌套字段的命名約定使用點符號。所以,你應該能夠這樣寫:

@Html.TextBox("Donation.DonationDate", Model.Donation.DonationDate.ToString("dd/MM/yyyy"), new { @class = "date" }) 

更新#2

要正確格式化,在你的模型應用到DonationDate屬性的屬性:

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

爲此,您還必須使用@ Html.EditorFor而不是TextBoxFor。